featurebase/sql3/test/defs/defs_date_functions.go
pokeeffe-molecula c304991e9f implemented extract ddl; tightened up type related stuff (#2329)
* implemented extract ddl; tightened up type related stuff

* added some test coverage

* review feedback

(cherry picked from commit f62313762c)
2022-12-12 09:01:20 -08:00

187 lines
3.6 KiB
Go

package defs
// datepart tests
var datePartTests = TableTest{
Table: tbl(
"dateparttests",
srcHdrs(
srcHdr("_id", fldTypeID),
srcHdr("a", fldTypeInt, "min 0", "max 1000"),
srcHdr("b", fldTypeInt, "min 0", "max 1000"),
srcHdr("ts", fldTypeTimestamp),
),
srcRows(
srcRow(int64(1), int64(10), int64(100), knownTimestamp()),
),
),
SQLTests: []SQLTest{
{
SQLs: sqls(
"select datepart()",
),
ExpErr: "count of formal parameters (2) does not match count of actual parameters (0)",
},
{
SQLs: sqls(
"select datepart(1, 2)",
),
ExpErr: "an expression of type 'int' cannot be passed to a parameter of type 'string'",
},
{
SQLs: sqls(
"select datepart('1', 2)",
),
ExpErr: "an expression of type 'int' cannot be passed to a parameter of type 'timestamp'",
},
{
SQLs: sqls(
"select datepart('1', current_timestamp)",
),
ExpErr: "invalid value '1' for parameter 'interval'",
},
{
SQLs: sqls(
"select _id, datepart('yy', ts) from dateparttests",
),
ExpHdrs: hdrs(
hdr("_id", fldTypeID),
hdr("", fldTypeInt),
),
ExpRows: rows(
row(int64(1), int64(2012)),
),
Compare: CompareExactUnordered,
},
{
SQLs: sqls(
"select _id, datepart('yd', ts) from dateparttests",
),
ExpHdrs: hdrs(
hdr("_id", fldTypeID),
hdr("", fldTypeInt),
),
ExpRows: rows(
row(int64(1), int64(306)),
),
Compare: CompareExactUnordered,
},
{
SQLs: sqls(
"select _id, datepart('m', ts) from dateparttests",
),
ExpHdrs: hdrs(
hdr("_id", fldTypeID),
hdr("", fldTypeInt),
),
ExpRows: rows(
row(int64(1), int64(11)),
),
Compare: CompareExactUnordered,
},
{
SQLs: sqls(
"select _id, datepart('d', ts) from dateparttests",
),
ExpHdrs: hdrs(
hdr("_id", fldTypeID),
hdr("", fldTypeInt),
),
ExpRows: rows(
row(int64(1), int64(1)),
),
Compare: CompareExactUnordered,
},
{
SQLs: sqls(
"select _id, datepart('w', ts) from dateparttests",
),
ExpHdrs: hdrs(
hdr("_id", fldTypeID),
hdr("", fldTypeInt),
),
ExpRows: rows(
row(int64(1), int64(4)),
),
Compare: CompareExactUnordered,
},
{
SQLs: sqls(
"select _id, datepart('wk', ts) from dateparttests",
),
ExpHdrs: hdrs(
hdr("_id", fldTypeID),
hdr("", fldTypeInt),
),
ExpRows: rows(
row(int64(1), int64(44)),
),
Compare: CompareExactUnordered,
},
{
SQLs: sqls(
"select _id, datepart('hh', ts) from dateparttests",
),
ExpHdrs: hdrs(
hdr("_id", fldTypeID),
hdr("", fldTypeInt),
),
ExpRows: rows(
row(int64(1), int64(22)),
),
Compare: CompareExactUnordered,
},
{
SQLs: sqls(
"select _id, datepart('mi', ts) from dateparttests",
),
ExpHdrs: hdrs(
hdr("_id", fldTypeID),
hdr("", fldTypeInt),
),
ExpRows: rows(
row(int64(1), int64(8)),
),
Compare: CompareExactUnordered,
},
{
SQLs: sqls(
"select _id, datepart('s', ts) from dateparttests",
),
ExpHdrs: hdrs(
hdr("_id", fldTypeID),
hdr("", fldTypeInt),
),
ExpRows: rows(
row(int64(1), int64(41)),
),
Compare: CompareExactUnordered,
},
{
SQLs: sqls(
"select _id, datepart('ms', ts) from dateparttests",
),
ExpHdrs: hdrs(
hdr("_id", fldTypeID),
hdr("", fldTypeInt),
),
ExpRows: rows(
row(int64(1), int64(0)),
),
Compare: CompareExactUnordered,
},
{
SQLs: sqls(
"select _id, datepart('ns', ts) from dateparttests",
),
ExpHdrs: hdrs(
hdr("_id", fldTypeID),
hdr("", fldTypeInt),
),
ExpRows: rows(
row(int64(1), int64(0)),
),
Compare: CompareExactUnordered,
},
},
}