mirror of
https://github.com/akvorado/akvorado.git
synced 2025-12-11 22:14:02 +01:00
console: fix use of aliased columns in dimensions
By default, `SELECT *` does not select ALIAS columns. Add the appropriate settings to modify this. Fix #541
This commit is contained in:
@@ -14,6 +14,7 @@ identified with a specific icon:
|
||||
## Unreleased
|
||||
|
||||
- 🩹 *console*: fix subnet aggregation when IPv4 or IPv6 is set to its default value
|
||||
- 🩹 *console*: fix `SrcNetPrefix`, `DstNetPrefix`, `PacketSize`, and `PacketSizeBucket` dimensions
|
||||
|
||||
## 1.8.0 - 2023-02-25
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ func (input graphCommonHandlerInput) sourceSelect() string {
|
||||
}
|
||||
}
|
||||
if len(truncated) == 0 {
|
||||
return "SELECT * FROM {{ .Table }}"
|
||||
return "SELECT * FROM {{ .Table }} SETTINGS asterisk_include_alias_columns = 1"
|
||||
}
|
||||
return fmt.Sprintf("SELECT * REPLACE (%s) FROM {{ .Table }}", strings.Join(truncated, ", "))
|
||||
return fmt.Sprintf("SELECT * REPLACE (%s) FROM {{ .Table }} SETTINGS asterisk_include_alias_columns = 1", strings.Join(truncated, ", "))
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ func TestSourceSelect(t *testing.T) {
|
||||
Input: graphCommonHandlerInput{
|
||||
Dimensions: []query.Column{},
|
||||
},
|
||||
Expected: "SELECT * FROM {{ .Table }}",
|
||||
Expected: "SELECT * FROM {{ .Table }} SETTINGS asterisk_include_alias_columns = 1",
|
||||
}, {
|
||||
Description: "no truncatable dimensions",
|
||||
Input: graphCommonHandlerInput{
|
||||
@@ -31,13 +31,13 @@ func TestSourceSelect(t *testing.T) {
|
||||
TruncateAddrV4: 16,
|
||||
TruncateAddrV6: 40,
|
||||
},
|
||||
Expected: "SELECT * FROM {{ .Table }}",
|
||||
Expected: "SELECT * FROM {{ .Table }} SETTINGS asterisk_include_alias_columns = 1",
|
||||
}, {
|
||||
Description: "no truncatation",
|
||||
Input: graphCommonHandlerInput{
|
||||
Dimensions: []query.Column{query.NewColumn("SrcAddr")},
|
||||
},
|
||||
Expected: "SELECT * FROM {{ .Table }}",
|
||||
Expected: "SELECT * FROM {{ .Table }} SETTINGS asterisk_include_alias_columns = 1",
|
||||
}, {
|
||||
Description: "IPv4/IPv6 same prefix length",
|
||||
Input: graphCommonHandlerInput{
|
||||
@@ -45,7 +45,7 @@ func TestSourceSelect(t *testing.T) {
|
||||
TruncateAddrV4: 16,
|
||||
TruncateAddrV6: 112,
|
||||
},
|
||||
Expected: "SELECT * REPLACE (tupleElement(IPv6CIDRToRange(SrcAddr, 112), 1) AS SrcAddr) FROM {{ .Table }}",
|
||||
Expected: "SELECT * REPLACE (tupleElement(IPv6CIDRToRange(SrcAddr, 112), 1) AS SrcAddr) FROM {{ .Table }} SETTINGS asterisk_include_alias_columns = 1",
|
||||
}, {
|
||||
Description: "IPv4/IPv6 different prefix length",
|
||||
Input: graphCommonHandlerInput{
|
||||
@@ -53,7 +53,7 @@ func TestSourceSelect(t *testing.T) {
|
||||
TruncateAddrV4: 24,
|
||||
TruncateAddrV6: 40,
|
||||
},
|
||||
Expected: "SELECT * REPLACE (tupleElement(IPv6CIDRToRange(SrcAddr, if(tupleElement(IPv6CIDRToRange(SrcAddr, 96), 1) = toIPv6('::ffff:0.0.0.0'), 120, 40)), 1) AS SrcAddr) FROM {{ .Table }}",
|
||||
Expected: "SELECT * REPLACE (tupleElement(IPv6CIDRToRange(SrcAddr, if(tupleElement(IPv6CIDRToRange(SrcAddr, 96), 1) = toIPv6('::ffff:0.0.0.0'), 120, 40)), 1) AS SrcAddr) FROM {{ .Table }} SETTINGS asterisk_include_alias_columns = 1",
|
||||
},
|
||||
}
|
||||
for _, tc := range cases {
|
||||
|
||||
@@ -167,7 +167,7 @@ func TestGraphQuerySQL(t *testing.T) {
|
||||
Expected: `
|
||||
{{ with context @@{"start":"2022-04-10T15:45:10Z","end":"2022-04-11T15:45:10Z","points":100,"units":"l3bps"}@@ }}
|
||||
WITH
|
||||
source AS (SELECT * FROM {{ .Table }})
|
||||
source AS (SELECT * FROM {{ .Table }} SETTINGS asterisk_include_alias_columns = 1)
|
||||
SELECT 1 AS axis, * FROM (
|
||||
SELECT
|
||||
{{ call .ToStartOfInterval "TimeReceived" }} AS time,
|
||||
@@ -197,7 +197,7 @@ ORDER BY time WITH FILL
|
||||
Expected: `
|
||||
{{ with context @@{"start":"2022-04-10T15:45:10Z","end":"2022-04-11T15:45:10Z","points":100,"units":"l2bps"}@@ }}
|
||||
WITH
|
||||
source AS (SELECT * FROM {{ .Table }})
|
||||
source AS (SELECT * FROM {{ .Table }} SETTINGS asterisk_include_alias_columns = 1)
|
||||
SELECT 1 AS axis, * FROM (
|
||||
SELECT
|
||||
{{ call .ToStartOfInterval "TimeReceived" }} AS time,
|
||||
@@ -228,7 +228,7 @@ ORDER BY time WITH FILL
|
||||
Expected: `
|
||||
{{ with context @@{"start":"2022-04-10T15:45:10Z","end":"2022-04-11T15:45:10Z","points":100,"units":"pps"}@@ }}
|
||||
WITH
|
||||
source AS (SELECT * FROM {{ .Table }})
|
||||
source AS (SELECT * FROM {{ .Table }} SETTINGS asterisk_include_alias_columns = 1)
|
||||
SELECT 1 AS axis, * FROM (
|
||||
SELECT
|
||||
{{ call .ToStartOfInterval "TimeReceived" }} AS time,
|
||||
@@ -260,7 +260,7 @@ ORDER BY time WITH FILL
|
||||
Expected: `
|
||||
{{ with context @@{"start":"2022-04-10T15:45:10Z","end":"2022-04-11T15:45:10Z","main-table-required":true,"points":100,"units":"l3bps"}@@ }}
|
||||
WITH
|
||||
source AS (SELECT * REPLACE (tupleElement(IPv6CIDRToRange(SrcAddr, if(tupleElement(IPv6CIDRToRange(SrcAddr, 96), 1) = toIPv6('::ffff:0.0.0.0'), 120, 48)), 1) AS SrcAddr) FROM {{ .Table }}),
|
||||
source AS (SELECT * REPLACE (tupleElement(IPv6CIDRToRange(SrcAddr, if(tupleElement(IPv6CIDRToRange(SrcAddr, 96), 1) = toIPv6('::ffff:0.0.0.0'), 120, 48)), 1) AS SrcAddr) FROM {{ .Table }} SETTINGS asterisk_include_alias_columns = 1),
|
||||
rows AS (SELECT SrcAddr FROM source WHERE {{ .Timefilter }} AND (SrcAddr BETWEEN toIPv6('::ffff:1.0.0.0') AND toIPv6('::ffff:1.255.255.255')) GROUP BY SrcAddr ORDER BY SUM(Bytes) DESC LIMIT 0)
|
||||
SELECT 1 AS axis, * FROM (
|
||||
SELECT
|
||||
@@ -291,7 +291,7 @@ ORDER BY time WITH FILL
|
||||
Expected: `
|
||||
{{ with context @@{"start":"2022-04-10T15:45:10Z","end":"2022-04-11T15:45:10Z","points":100,"units":"l3bps"}@@ }}
|
||||
WITH
|
||||
source AS (SELECT * FROM {{ .Table }})
|
||||
source AS (SELECT * FROM {{ .Table }} SETTINGS asterisk_include_alias_columns = 1)
|
||||
SELECT 1 AS axis, * FROM (
|
||||
SELECT
|
||||
{{ call .ToStartOfInterval "TimeReceived" }} AS time,
|
||||
@@ -321,7 +321,7 @@ ORDER BY time WITH FILL
|
||||
Expected: `
|
||||
{{ with context @@{"start":"2022-04-10T15:45:10Z","end":"2022-04-11T15:45:10Z","points":100,"units":"l3bps"}@@ }}
|
||||
WITH
|
||||
source AS (SELECT * FROM {{ .Table }})
|
||||
source AS (SELECT * FROM {{ .Table }} SETTINGS asterisk_include_alias_columns = 1)
|
||||
SELECT 1 AS axis, * FROM (
|
||||
SELECT
|
||||
{{ call .ToStartOfInterval "TimeReceived" }} AS time,
|
||||
@@ -352,7 +352,7 @@ ORDER BY time WITH FILL
|
||||
Expected: `
|
||||
{{ with context @@{"start":"2022-04-10T15:45:10Z","end":"2022-04-11T15:45:10Z","points":100,"units":"l3bps"}@@ }}
|
||||
WITH
|
||||
source AS (SELECT * FROM {{ .Table }})
|
||||
source AS (SELECT * FROM {{ .Table }} SETTINGS asterisk_include_alias_columns = 1)
|
||||
SELECT 1 AS axis, * FROM (
|
||||
SELECT
|
||||
{{ call .ToStartOfInterval "TimeReceived" }} AS time,
|
||||
@@ -399,7 +399,7 @@ ORDER BY time WITH FILL
|
||||
Expected: `
|
||||
{{ with context @@{"start":"2022-04-10T15:45:10Z","end":"2022-04-11T15:45:10Z","points":100,"units":"inl2%"}@@ }}
|
||||
WITH
|
||||
source AS (SELECT * FROM {{ .Table }})
|
||||
source AS (SELECT * FROM {{ .Table }} SETTINGS asterisk_include_alias_columns = 1)
|
||||
SELECT 1 AS axis, * FROM (
|
||||
SELECT
|
||||
{{ call .ToStartOfInterval "TimeReceived" }} AS time,
|
||||
@@ -449,7 +449,7 @@ ORDER BY time WITH FILL
|
||||
Expected: `
|
||||
{{ with context @@{"start":"2022-04-10T15:45:10Z","end":"2022-04-11T15:45:10Z","points":100,"units":"l3bps"}@@ }}
|
||||
WITH
|
||||
source AS (SELECT * FROM {{ .Table }}),
|
||||
source AS (SELECT * FROM {{ .Table }} SETTINGS asterisk_include_alias_columns = 1),
|
||||
rows AS (SELECT ExporterName, InIfProvider FROM source WHERE {{ .Timefilter }} GROUP BY ExporterName, InIfProvider ORDER BY SUM(Bytes) DESC LIMIT 20)
|
||||
SELECT 1 AS axis, * FROM (
|
||||
SELECT
|
||||
@@ -485,7 +485,7 @@ ORDER BY time WITH FILL
|
||||
Expected: `
|
||||
{{ with context @@{"start":"2022-04-10T15:45:10Z","end":"2022-04-11T15:45:10Z","points":100,"units":"l3bps"}@@ }}
|
||||
WITH
|
||||
source AS (SELECT * FROM {{ .Table }}),
|
||||
source AS (SELECT * FROM {{ .Table }} SETTINGS asterisk_include_alias_columns = 1),
|
||||
rows AS (SELECT ExporterName, InIfProvider FROM source WHERE {{ .Timefilter }} GROUP BY ExporterName, InIfProvider ORDER BY SUM(Bytes) DESC LIMIT 20)
|
||||
SELECT 1 AS axis, * FROM (
|
||||
SELECT
|
||||
@@ -537,7 +537,7 @@ ORDER BY time WITH FILL
|
||||
Expected: `
|
||||
{{ with context @@{"start":"2022-04-10T15:45:10Z","end":"2022-04-11T15:45:10Z","points":100,"units":"l3bps"}@@ }}
|
||||
WITH
|
||||
source AS (SELECT * FROM {{ .Table }}),
|
||||
source AS (SELECT * FROM {{ .Table }} SETTINGS asterisk_include_alias_columns = 1),
|
||||
rows AS (SELECT ExporterName, InIfProvider FROM source WHERE {{ .Timefilter }} GROUP BY ExporterName, InIfProvider ORDER BY SUM(Bytes) DESC LIMIT 20)
|
||||
SELECT 1 AS axis, * FROM (
|
||||
SELECT
|
||||
|
||||
@@ -25,6 +25,7 @@ func TestRequireMainTable(t *testing.T) {
|
||||
{[]query.Column{query.NewColumn("DstAddr")}, query.NewFilter(""), true},
|
||||
{[]query.Column{query.NewColumn("SrcAS"), query.NewColumn("DstAddr")}, query.NewFilter(""), true},
|
||||
{[]query.Column{query.NewColumn("DstAddr"), query.NewColumn("SrcAS")}, query.NewFilter(""), true},
|
||||
{[]query.Column{query.NewColumn("DstNetPrefix")}, query.NewFilter(""), true},
|
||||
{[]query.Column{}, query.NewFilter("SrcAddr = 203.0.113.15"), true},
|
||||
}
|
||||
sch := schema.NewMock(t)
|
||||
|
||||
@@ -40,7 +40,7 @@ func TestSankeyQuerySQL(t *testing.T) {
|
||||
Expected: `
|
||||
{{ with context @@{"start":"2022-04-10T15:45:10Z","end":"2022-04-11T15:45:10Z","points":20,"units":"l3bps"}@@ }}
|
||||
WITH
|
||||
source AS (SELECT * FROM {{ .Table }}),
|
||||
source AS (SELECT * FROM {{ .Table }} SETTINGS asterisk_include_alias_columns = 1),
|
||||
(SELECT MAX(TimeReceived) - MIN(TimeReceived) FROM source WHERE {{ .Timefilter }}) AS range,
|
||||
rows AS (SELECT SrcAS, ExporterName FROM source WHERE {{ .Timefilter }} GROUP BY SrcAS, ExporterName ORDER BY SUM(Bytes) DESC LIMIT 5)
|
||||
SELECT
|
||||
@@ -70,7 +70,7 @@ ORDER BY xps DESC
|
||||
Expected: `
|
||||
{{ with context @@{"start":"2022-04-10T15:45:10Z","end":"2022-04-11T15:45:10Z","points":20,"units":"l2bps"}@@ }}
|
||||
WITH
|
||||
source AS (SELECT * FROM {{ .Table }}),
|
||||
source AS (SELECT * FROM {{ .Table }} SETTINGS asterisk_include_alias_columns = 1),
|
||||
(SELECT MAX(TimeReceived) - MIN(TimeReceived) FROM source WHERE {{ .Timefilter }}) AS range,
|
||||
rows AS (SELECT SrcAS, ExporterName FROM source WHERE {{ .Timefilter }} GROUP BY SrcAS, ExporterName ORDER BY SUM(Bytes) DESC LIMIT 5)
|
||||
SELECT
|
||||
@@ -101,7 +101,7 @@ ORDER BY xps DESC
|
||||
Expected: `
|
||||
{{ with context @@{"start":"2022-04-10T15:45:10Z","end":"2022-04-11T15:45:10Z","points":20,"units":"pps"}@@ }}
|
||||
WITH
|
||||
source AS (SELECT * FROM {{ .Table }}),
|
||||
source AS (SELECT * FROM {{ .Table }} SETTINGS asterisk_include_alias_columns = 1),
|
||||
(SELECT MAX(TimeReceived) - MIN(TimeReceived) FROM source WHERE {{ .Timefilter }}) AS range,
|
||||
rows AS (SELECT SrcAS, ExporterName FROM source WHERE {{ .Timefilter }} GROUP BY SrcAS, ExporterName ORDER BY SUM(Bytes) DESC LIMIT 5)
|
||||
SELECT
|
||||
@@ -131,7 +131,7 @@ ORDER BY xps DESC
|
||||
Expected: `
|
||||
{{ with context @@{"start":"2022-04-10T15:45:10Z","end":"2022-04-11T15:45:10Z","points":20,"units":"l3bps"}@@ }}
|
||||
WITH
|
||||
source AS (SELECT * FROM {{ .Table }}),
|
||||
source AS (SELECT * FROM {{ .Table }} SETTINGS asterisk_include_alias_columns = 1),
|
||||
(SELECT MAX(TimeReceived) - MIN(TimeReceived) FROM source WHERE {{ .Timefilter }} AND (DstCountry = 'FR')) AS range,
|
||||
rows AS (SELECT SrcAS, ExporterName FROM source WHERE {{ .Timefilter }} AND (DstCountry = 'FR') GROUP BY SrcAS, ExporterName ORDER BY SUM(Bytes) DESC LIMIT 10)
|
||||
SELECT
|
||||
|
||||
Reference in New Issue
Block a user