featurebase/sql3/test/defs/defs_distinct.go
pokeeffe-molecula f030d58d95
implemented DISTINCT (fb-1562) (#2388)
* implemented distinct

* implemented distinct
* uses first cut of a buffer pool, and extendible hashing with thresholded spill to disk
* tests
* cleaned up some stuff around query plan output to make developing tooling easier
* added optimization to call PQL Distinct()

* fixed test

* fix for passing wrong index name in orchestrator

* back out change to DistinctTimestamp

* fix other instance of wrong table name being passed

* use full index name instead of abbreviated one for translation. sigh.

* removed some unused code

Co-authored-by: Matthew Jaffee <jaffee@pilosa.com>
2023-01-03 22:13:31 -06:00

157 lines
3.8 KiB
Go

package defs
import "github.com/molecula/featurebase/v3/pql"
// distinct tests
var distinctTests = TableTest{
Table: tbl(
"distinct_test",
srcHdrs(
srcHdr("_id", fldTypeID),
srcHdr("i1", fldTypeInt),
srcHdr("b1", fldTypeBool),
srcHdr("id1", fldTypeID),
srcHdr("ids1", fldTypeIDSet),
srcHdr("d1", fldTypeDecimal2),
srcHdr("s1", fldTypeString),
srcHdr("ss1", fldTypeStringSet),
srcHdr("ts1", fldTypeTimestamp),
),
srcRows(
srcRow(int64(1), int64(10), bool(false), int64(1), []int64{10, 20, 30}, float64(10.00), string("10"), []string{"10", "20", "30"}, knownTimestamp()),
srcRow(int64(2), int64(20), bool(true), int64(2), []int64{11, 21, 31}, float64(20.00), string("20"), []string{"11", "21", "31"}, knownTimestamp()),
srcRow(int64(3), int64(30), bool(false), int64(3), []int64{12, 22, 32}, float64(30.00), string("30"), []string{"12", "22", "32"}, knownTimestamp()),
srcRow(int64(4), int64(10), bool(false), int64(1), []int64{10, 20, 30}, float64(10.00), string("10"), []string{"10", "20", "30"}, knownTimestamp()),
srcRow(int64(5), int64(20), bool(true), int64(2), []int64{11, 21, 31}, float64(20.00), string("20"), []string{"11", "21", "31"}, knownTimestamp()),
srcRow(int64(6), int64(30), bool(false), int64(3), []int64{12, 22, 32}, float64(30.00), string("30"), []string{"12", "22", "32"}, knownTimestamp()),
),
),
SQLTests: []SQLTest{
{
SQLs: sqls(
"select distinct i1, b1, id1 from distinct_test",
),
ExpHdrs: hdrs(
hdr("i1", fldTypeInt),
hdr("b1", fldTypeBool),
hdr("id1", fldTypeID),
),
ExpRows: rows(
row(int64(10), bool(false), int64(1)),
row(int64(20), bool(true), int64(2)),
row(int64(30), bool(false), int64(3)),
),
Compare: CompareExactUnordered,
},
{
SQLs: sqls(
"select distinct i1 from distinct_test",
),
ExpHdrs: hdrs(
hdr("i1", fldTypeInt),
),
ExpRows: rows(
row(int64(10)),
row(int64(20)),
row(int64(30)),
),
Compare: CompareExactUnordered,
},
{
SQLs: sqls(
"select distinct b1 from distinct_test",
),
ExpHdrs: hdrs(
hdr("b1", fldTypeBool),
),
ExpRows: rows(
row(bool(false)),
row(bool(true)),
),
Compare: CompareExactUnordered,
},
{
SQLs: sqls(
"select distinct id1 from distinct_test",
),
ExpHdrs: hdrs(
hdr("id1", fldTypeID),
),
ExpRows: rows(
row(int64(1)),
row(int64(2)),
row(int64(3)),
),
Compare: CompareExactUnordered,
},
{
SQLs: sqls(
"select distinct ids1 from distinct_test",
),
ExpHdrs: hdrs(
hdr("ids1", fldTypeIDSet),
),
ExpRows: rows(
row([]int64{10, 20, 30}),
row([]int64{11, 21, 31}),
row([]int64{12, 22, 32}),
),
Compare: CompareExactUnordered,
},
{
SQLs: sqls(
"select distinct d1 from distinct_test",
),
ExpHdrs: hdrs(
hdr("d1", fldTypeDecimal2),
),
ExpRows: rows(
row(pql.NewDecimal(1000, 2)),
row(pql.NewDecimal(2000, 2)),
row(pql.NewDecimal(3000, 2)),
),
Compare: CompareExactUnordered,
},
{
SQLs: sqls(
"select distinct s1 from distinct_test",
),
ExpHdrs: hdrs(
hdr("s1", fldTypeString),
),
ExpRows: rows(
row(string("10")),
row(string("20")),
row(string("30")),
),
Compare: CompareExactUnordered,
},
{
SQLs: sqls(
"select distinct ss1 from distinct_test",
),
ExpHdrs: hdrs(
hdr("ss1", fldTypeStringSet),
),
ExpRows: rows(
row([]string{"10", "20", "30"}),
row([]string{"11", "21", "31"}),
row([]string{"12", "22", "32"}),
),
Compare: CompareExactUnordered,
SortStringKeys: true,
},
{
SQLs: sqls(
"select distinct ts1 from distinct_test",
),
ExpHdrs: hdrs(
hdr("ts1", fldTypeTimestamp),
),
ExpRows: rows(
row(knownTimestamp()),
),
Compare: CompareExactUnordered,
},
},
}