featurebase/sql3/test/defs/defs_having.go

139 lines
3.6 KiB
Go

package defs
import "github.com/featurebasedb/featurebase/v3/pql"
var selectHavingTests = TableTest{
name: "select-having",
Table: tbl(
"having_test",
srcHdrs(
srcHdr("_id", fldTypeID),
srcHdr("an_int", fldTypeInt, "min 0", "max 100"),
srcHdr("an_id_set", fldTypeIDSet),
srcHdr("an_id", fldTypeID),
srcHdr("a_string", fldTypeString),
srcHdr("a_string_set", fldTypeStringSet),
srcHdr("a_decimal", fldTypeDecimal2),
),
srcRows(
srcRow(int64(1), int64(11), []int64{11, 12, 13}, int64(101), "str1", []string{"a1", "b1", "c1"}, float64(123.45)),
srcRow(int64(2), int64(22), []int64{21, 22, 23}, int64(201), "str2", []string{"a2", "b2", "c2"}, float64(234.56)),
srcRow(int64(3), int64(33), []int64{31, 32, 33}, int64(301), "str3", []string{"a3", "b3", "c3"}, float64(345.67)),
srcRow(int64(4), int64(44), []int64{41, 42, 43}, int64(401), "str4", []string{"a4", "b4", "c4"}, float64(456.78)),
srcRow(int64(5), int64(11), []int64{11, 12, 13}, int64(101), "str1", []string{"a5", "b5", "c5"}, float64(567.89)),
),
),
SQLTests: []SQLTest{
{
name: "countfieldincluded",
SQLs: sqls(
"select count(an_int), an_int from having_test group by an_int having count(an_int) = 1",
),
ExpHdrs: hdrs(
hdr("", fldTypeInt),
hdr("an_int", fldTypeInt),
),
ExpRows: rows(
row(int64(1), int64(22)),
row(int64(1), int64(33)),
row(int64(1), int64(44)),
),
Compare: CompareExactUnordered,
SortStringKeys: true,
},
{
name: "countfieldnotincluded",
SQLs: sqls(
"select an_int from having_test group by an_int having count(an_int) = 1",
),
ExpHdrs: hdrs(
hdr("an_int", fldTypeInt),
),
ExpRows: rows(
row(int64(22)),
row(int64(33)),
row(int64(44)),
),
Compare: CompareExactUnordered,
SortStringKeys: true,
},
{
name: "countstarincluded",
SQLs: sqls(
"select count(*), an_int from having_test group by an_int having count(*) > 1",
),
ExpHdrs: hdrs(
hdr("", fldTypeInt),
hdr("an_int", fldTypeInt),
),
ExpRows: rows(
row(int64(2), int64(11)),
),
Compare: CompareExactUnordered,
SortStringKeys: true,
},
{
name: "countstarnotincluded",
SQLs: sqls(
"select an_int from having_test group by an_int having count(*) > 1",
),
ExpHdrs: hdrs(
hdr("an_int", fldTypeInt),
),
ExpRows: rows(
row(
int64(11),
),
),
Compare: CompareExactUnordered,
SortStringKeys: true,
},
{
name: "sum-dec",
SQLs: sqls(
"select sum(a_decimal), an_int from having_test group by an_int having sum(a_decimal) < 250.00",
),
ExpHdrs: hdrs(
hdr("", fldTypeDecimal2),
hdr("an_int", fldTypeInt),
),
ExpRows: rows(
row(pql.NewDecimal(23456, 2), int64(22)),
),
Compare: CompareExactUnordered,
SortStringKeys: true,
},
{
name: "sum-int",
SQLs: sqls(
"select sum(an_int), an_int from having_test group by an_int having sum(an_int) < 25",
),
ExpHdrs: hdrs(
hdr("", fldTypeInt),
hdr("an_int", fldTypeInt),
),
ExpRows: rows(
row(int64(22), int64(11)),
row(int64(22), int64(22)),
),
Compare: CompareExactUnordered,
SortStringKeys: true,
},
// may fail in DAX due to missing string translation.
{
name: "string",
SQLs: sqls(
"select a_string, count(*) from having_test group by a_string having count(*) > 1",
),
ExpHdrs: hdrs(
hdr("a_string", fldTypeString),
hdr("", fldTypeInt),
),
ExpRows: rows(
row(string("str1"), int64(2)),
),
Compare: CompareExactUnordered,
SortStringKeys: true,
},
},
}