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:
Vincent Bernat
2023-03-03 08:27:39 +01:00
parent b80a847268
commit 88b27a83e6
6 changed files with 24 additions and 22 deletions

View File

@@ -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

View File

@@ -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, ", "))
}

View File

@@ -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 {

View File

@@ -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

View File

@@ -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)

View File

@@ -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