diff --git a/pkg/tsdb/grafana-postgresql-datasource/postgres_snapshot_test.go b/pkg/tsdb/grafana-postgresql-datasource/postgres_snapshot_test.go index 8f0637257d6..426e462165a 100644 --- a/pkg/tsdb/grafana-postgresql-datasource/postgres_snapshot_test.go +++ b/pkg/tsdb/grafana-postgresql-datasource/postgres_snapshot_test.go @@ -127,6 +127,8 @@ func TestIntegrationPostgresSnapshots(t *testing.T) { {format: "table", name: "types_other"}, {format: "table", name: "timestamp_convert_bigint"}, {format: "table", name: "timestamp_convert_integer"}, + {format: "table", name: "timestamp_convert_real"}, + {format: "table", name: "timestamp_convert_double"}, } for _, test := range tt { diff --git a/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_bigint.golden.jsonc b/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_bigint.golden.jsonc index 445401d9084..81fe927d201 100644 --- a/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_bigint.golden.jsonc +++ b/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_bigint.golden.jsonc @@ -14,9 +14,9 @@ // | Labels: | Labels: | Labels: | Labels: | // | Type: []*time.Time | Type: []*time.Time | Type: []*int64 | Type: []*time.Time | // +--------------------------------------+-----------------------------------+---------------------+-----------------------------------+ -// | 2023-12-24 14:21:27 +0000 UTC | 2023-12-21 12:21:27 +0000 UTC | 1703161287 | 2023-12-21 12:21:52 +0000 UTC | -// | 2023-12-24 14:21:27.724 +0000 UTC | 2023-12-21 12:21:27.724 +0000 UTC | 1703161287724 | 2023-12-21 12:21:52.522 +0000 UTC | -// | 2023-12-24 14:21:27.724919 +0000 UTC | 2023-12-21 12:21:27.724 +0000 UTC | 1703161287724919000 | 2023-12-21 12:21:52.522 +0000 UTC | +// | 2023-12-21 12:21:27 +0000 UTC | 2023-12-21 12:21:27 +0000 UTC | 1703161287 | 2023-12-21 12:21:52 +0000 UTC | +// | 2023-12-21 12:21:27.724 +0000 UTC | 2023-12-21 12:21:27.724 +0000 UTC | 1703161287724 | 2023-12-21 12:21:52.522 +0000 UTC | +// | 2023-12-21 12:21:27.724919 +0000 UTC | 2023-12-21 12:21:27.724 +0000 UTC | 1703161287724919000 | 2023-12-21 12:21:52.522 +0000 UTC | // | null | null | null | null | // +--------------------------------------+-----------------------------------+---------------------+-----------------------------------+ // @@ -72,9 +72,9 @@ "data": { "values": [ [ - 1703427687000, - 1703427687724, - 1703427687724, + 1703161287000, + 1703161287724, + 1703161287724, null ], [ diff --git a/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_bigint.sql b/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_bigint.sql index 7d0764270ec..fee2235c46b 100644 --- a/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_bigint.sql +++ b/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_bigint.sql @@ -8,7 +8,7 @@ CREATE TEMPORARY TABLE tbl ( ); INSERT INTO tbl (reallyt, "time", n, timeend) VALUES -('2023-12-24T14:21:27 UTC', 1703161287, 1703161287, 1703161312), -('2023-12-24T14:21:27.724 UTC', 1703161287724, 1703161287724, 1703161312522), -('2023-12-24T14:21:27.724919 UTC', 1703161287724919000, 1703161287724919000, 1703161312522186000), +('2023-12-21T12:21:27 UTC', 1703161287, 1703161287, 1703161312), +('2023-12-21T12:21:27.724 UTC', 1703161287724, 1703161287724, 1703161312522), +('2023-12-21T12:21:27.724919 UTC', 1703161287724919000, 1703161287724919000, 1703161312522186000), (NULL, NULL, NULL, NULL); \ No newline at end of file diff --git a/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_double.golden.jsonc b/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_double.golden.jsonc new file mode 100644 index 00000000000..310adf7157d --- /dev/null +++ b/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_double.golden.jsonc @@ -0,0 +1,113 @@ +// 🌟 This was machine generated. Do not edit. 🌟 +// +// Frame[0] { +// "typeVersion": [ +// 0, +// 0 +// ], +// "executedQueryString": "SELECT * FROM tbl" +// } +// Name: +// Dimensions: 4 Fields by 4 Rows +// +--------------------------------------+-----------------------------------+-----------------------+-----------------------------------+ +// | Name: reallyt | Name: time | Name: n | Name: timeend | +// | Labels: | Labels: | Labels: | Labels: | +// | Type: []*time.Time | Type: []*time.Time | Type: []*float64 | Type: []*time.Time | +// +--------------------------------------+-----------------------------------+-----------------------+-----------------------------------+ +// | 2023-12-21 12:21:27 +0000 UTC | 2023-12-21 12:21:27 +0000 UTC | 1.703161287e+09 | 2023-12-21 12:21:52 +0000 UTC | +// | 2023-12-21 12:21:27.724 +0000 UTC | 2023-12-21 12:21:27.724 +0000 UTC | 1.703161287724e+12 | 2023-12-21 12:21:52.522 +0000 UTC | +// | 2023-12-21 12:21:27.724919 +0000 UTC | 2023-12-21 12:21:27.724 +0000 UTC | 1.703161287724919e+18 | 2023-12-21 12:21:52.522 +0000 UTC | +// | null | null | null | null | +// +--------------------------------------+-----------------------------------+-----------------------+-----------------------------------+ +// +// +// 🌟 This was machine generated. Do not edit. 🌟 +{ + "status": 200, + "frames": [ + { + "schema": { + "meta": { + "typeVersion": [ + 0, + 0 + ], + "executedQueryString": "SELECT * FROM tbl" + }, + "fields": [ + { + "name": "reallyt", + "type": "time", + "typeInfo": { + "frame": "time.Time", + "nullable": true + } + }, + { + "name": "time", + "type": "time", + "typeInfo": { + "frame": "time.Time", + "nullable": true + } + }, + { + "name": "n", + "type": "number", + "typeInfo": { + "frame": "float64", + "nullable": true + } + }, + { + "name": "timeend", + "type": "time", + "typeInfo": { + "frame": "time.Time", + "nullable": true + } + } + ] + }, + "data": { + "values": [ + [ + 1703161287000, + 1703161287724, + 1703161287724, + null + ], + [ + 1703161287000, + 1703161287724, + 1703161287724, + null + ], + [ + 1703161287, + 1703161287724, + 1703161287724919000, + null + ], + [ + 1703161312000, + 1703161312522, + 1703161312522, + null + ] + ], + "nanos": [ + [ + 0, + 0, + 919000, + 0 + ], + null, + null, + null + ] + } + } + ] +} \ No newline at end of file diff --git a/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_double.sql b/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_double.sql new file mode 100644 index 00000000000..0ae41f6db66 --- /dev/null +++ b/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_double.sql @@ -0,0 +1,14 @@ +-- SELECT * FROM tbl +-- the time-field and time-end field gets converted to time.Time +CREATE TEMPORARY TABLE tbl ( + reallyt timestamp with time zone, -- reference real timestamp + "time" double precision, + n double precision, -- normal number, it should not get converted to a timestamp + timeend bigint +); + +INSERT INTO tbl (reallyt, "time", n, timeend) VALUES +('2023-12-21T12:21:27 UTC', 1703161287, 1703161287, 1703161312), +('2023-12-21T12:21:27.724 UTC', 1703161287724, 1703161287724, 1703161312522), +('2023-12-21T12:21:27.724919 UTC', 1703161287724919000, 1703161287724919000, 1703161312522186000), +(NULL, NULL, NULL, NULL); \ No newline at end of file diff --git a/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_integer.golden.jsonc b/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_integer.golden.jsonc index dee4e0a4a7d..fefca8385ab 100644 --- a/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_integer.golden.jsonc +++ b/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_integer.golden.jsonc @@ -14,7 +14,7 @@ // | Labels: | Labels: | Labels: | Labels: | // | Type: []*time.Time | Type: []*time.Time | Type: []*int32 | Type: []*time.Time | // +-------------------------------+-------------------------------+----------------+-------------------------------+ -// | 2023-12-24 14:21:27 +0000 UTC | 2023-12-21 12:21:27 +0000 UTC | 1703161287 | 2023-12-21 12:21:52 +0000 UTC | +// | 2023-12-21 12:21:27 +0000 UTC | 2023-12-21 12:21:27 +0000 UTC | 1703161287 | 2023-12-21 12:21:52 +0000 UTC | // | null | null | null | null | // +-------------------------------+-------------------------------+----------------+-------------------------------+ // @@ -70,7 +70,7 @@ "data": { "values": [ [ - 1703427687000, + 1703161287000, null ], [ diff --git a/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_integer.sql b/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_integer.sql index 0d45dd898c8..87bec5e98be 100644 --- a/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_integer.sql +++ b/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_integer.sql @@ -8,5 +8,5 @@ CREATE TEMPORARY TABLE tbl ( ); INSERT INTO tbl (reallyt, "time", n, timeend) VALUES -('2023-12-24T14:21:27 UTC', 1703161287, 1703161287, 1703161312), +('2023-12-21T12:21:27 UTC', 1703161287, 1703161287, 1703161312), (NULL, NULL, NULL, NULL); \ No newline at end of file diff --git a/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_real.golden.jsonc b/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_real.golden.jsonc new file mode 100644 index 00000000000..6548ddecde9 --- /dev/null +++ b/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_real.golden.jsonc @@ -0,0 +1,113 @@ +// 🌟 This was machine generated. Do not edit. 🌟 +// +// Frame[0] { +// "typeVersion": [ +// 0, +// 0 +// ], +// "executedQueryString": "SELECT * FROM tbl" +// } +// Name: +// Dimensions: 4 Fields by 4 Rows +// +--------------------------------------+-------------------------------+------------------+-----------------------------------+ +// | Name: reallyt | Name: time | Name: n | Name: timeend | +// | Labels: | Labels: | Labels: | Labels: | +// | Type: []*time.Time | Type: []*time.Time | Type: []*float64 | Type: []*time.Time | +// +--------------------------------------+-------------------------------+------------------+-----------------------------------+ +// | 2023-12-21 12:21:27 +0000 UTC | 2023-12-21 12:21:40 +0000 UTC | 1.7031613e+09 | 2023-12-21 12:21:52 +0000 UTC | +// | 2023-12-21 12:21:27.724 +0000 UTC | 2023-12-21 12:20:00 +0000 UTC | 1.7031612e+12 | 2023-12-21 12:21:52.522 +0000 UTC | +// | 2023-12-21 12:21:27.724919 +0000 UTC | 2023-12-21 12:20:00 +0000 UTC | 1.7031612e+18 | 2023-12-21 12:21:52.522 +0000 UTC | +// | null | null | null | null | +// +--------------------------------------+-------------------------------+------------------+-----------------------------------+ +// +// +// 🌟 This was machine generated. Do not edit. 🌟 +{ + "status": 200, + "frames": [ + { + "schema": { + "meta": { + "typeVersion": [ + 0, + 0 + ], + "executedQueryString": "SELECT * FROM tbl" + }, + "fields": [ + { + "name": "reallyt", + "type": "time", + "typeInfo": { + "frame": "time.Time", + "nullable": true + } + }, + { + "name": "time", + "type": "time", + "typeInfo": { + "frame": "time.Time", + "nullable": true + } + }, + { + "name": "n", + "type": "number", + "typeInfo": { + "frame": "float64", + "nullable": true + } + }, + { + "name": "timeend", + "type": "time", + "typeInfo": { + "frame": "time.Time", + "nullable": true + } + } + ] + }, + "data": { + "values": [ + [ + 1703161287000, + 1703161287724, + 1703161287724, + null + ], + [ + 1703161300000, + 1703161200000, + 1703161200000, + null + ], + [ + 1703161300, + 1703161200000, + 1703161200000000000, + null + ], + [ + 1703161312000, + 1703161312522, + 1703161312522, + null + ] + ], + "nanos": [ + [ + 0, + 0, + 919000, + 0 + ], + null, + null, + null + ] + } + } + ] +} \ No newline at end of file diff --git a/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_real.sql b/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_real.sql new file mode 100644 index 00000000000..ef7e072bb67 --- /dev/null +++ b/pkg/tsdb/grafana-postgresql-datasource/testdata/table/timestamp_convert_real.sql @@ -0,0 +1,14 @@ +-- SELECT * FROM tbl +-- the time-field and time-end field gets converted to time.Time +CREATE TEMPORARY TABLE tbl ( + reallyt timestamp with time zone, -- reference real timestamp + "time" real, + n real, -- normal number, it should not get converted to a timestamp + timeend bigint +); + +INSERT INTO tbl (reallyt, "time", n, timeend) VALUES +('2023-12-21T12:21:27 UTC', 1703161287, 1703161287, 1703161312), +('2023-12-21T12:21:27.724 UTC', 1703161287724, 1703161287724, 1703161312522), +('2023-12-21T12:21:27.724919 UTC', 1703161287724919000, 1703161287724919000, 1703161312522186000), +(NULL, NULL, NULL, NULL); \ No newline at end of file