From 5878f6d66d2035a7376f6d31b67f122a1ed80cc2 Mon Sep 17 00:00:00 2001 From: nick Date: Thu, 20 Mar 2025 15:12:58 -0700 Subject: [PATCH 01/27] Update GMS callsites. --- server/index/table.go | 6 +++--- server/index/writable_table.go | 6 +++--- testing/go/enginetest/doltgres_harness_test.go | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/server/index/table.go b/server/index/table.go index 155c23151e..6c54cb350c 100644 --- a/server/index/table.go +++ b/server/index/table.go @@ -33,15 +33,15 @@ var _ sql.ProjectedTable = (*DoltgresTable)(nil) var _ sql.IndexSearchableTable = (*DoltgresTable)(nil) // IndexedAccess implements the sql.IndexSearchableTable interface. -func (dt *DoltgresTable) IndexedAccess(lookup sql.IndexLookup) sql.IndexedTable { +func (dt *DoltgresTable) IndexedAccess(ctx *sql.Context, lookup sql.IndexLookup) sql.IndexedTable { if dgRanges, ok := lookup.Ranges.(index.DoltgresRangeCollection); ok { return &IndexedDoltgresTable{ - IndexedDoltTable: dt.DoltTable.IndexedAccess(lookup).(*sqle.IndexedDoltTable), + IndexedDoltTable: dt.DoltTable.IndexedAccess(ctx, lookup).(*sqle.IndexedDoltTable), idx: lookup.Index, rc: dgRanges, } } else { - return dt.DoltTable.IndexedAccess(lookup) + return dt.DoltTable.IndexedAccess(ctx, lookup) } } diff --git a/server/index/writable_table.go b/server/index/writable_table.go index 63702e3a5c..c1181256e8 100644 --- a/server/index/writable_table.go +++ b/server/index/writable_table.go @@ -33,15 +33,15 @@ var _ sql.ProjectedTable = (*WritableDoltgresTable)(nil) var _ sql.IndexSearchableTable = (*WritableDoltgresTable)(nil) // IndexedAccess implements the sql.IndexSearchableTable interface. -func (dt *WritableDoltgresTable) IndexedAccess(lookup sql.IndexLookup) sql.IndexedTable { +func (dt *WritableDoltgresTable) IndexedAccess(ctx *sql.Context, lookup sql.IndexLookup) sql.IndexedTable { if dgRanges, ok := lookup.Ranges.(index.DoltgresRangeCollection); ok { return &IndexedWritableDoltgresTable{ - WritableIndexedDoltTable: dt.WritableDoltTable.IndexedAccess(lookup).(*sqle.WritableIndexedDoltTable), + WritableIndexedDoltTable: dt.WritableDoltTable.IndexedAccess(ctx, lookup).(*sqle.WritableIndexedDoltTable), idx: lookup.Index, rc: dgRanges, } } else { - return dt.WritableDoltTable.IndexedAccess(lookup) + return dt.WritableDoltTable.IndexedAccess(ctx, lookup) } } diff --git a/testing/go/enginetest/doltgres_harness_test.go b/testing/go/enginetest/doltgres_harness_test.go index 313eca00f3..b068134acd 100644 --- a/testing/go/enginetest/doltgres_harness_test.go +++ b/testing/go/enginetest/doltgres_harness_test.go @@ -357,8 +357,8 @@ func (d *DoltgresHarness) SnapshotTable(db sql.VersionedDatabase, tableName stri } func (d *DoltgresHarness) EvaluateQueryResults(t *testing.T, expected []sql.Row, expectedCols []*sql.Column, sch sql.Schema, rows []sql.Row, q string) { - widenedRows := enginetest.WidenRows(sch, rows) - widenedExpected := enginetest.WidenRows(sch, expected) + widenedRows := enginetest.WidenRows(t, sch, rows) + widenedExpected := enginetest.WidenRows(t, sch, expected) upperQuery := strings.ToUpper(q) orderBy := strings.Contains(upperQuery, "ORDER BY ") @@ -453,7 +453,7 @@ func widenExpectedRows(t *testing.T, q string, expected []sql.Row, sch sql.Schem expected[i][j] = convertedExpected } - expected[i] = enginetest.WidenRow(sch, expected[i]) + expected[i] = enginetest.WidenRow(t, sch, expected[i]) // OK results from GMS manifest as a nil schema in postgres, only accessible via command tags if isNilOrEmptySchema && len(expected[i]) == 1 { From c1d1f2f6b9c6c9711e6cdaf45ebce599c6bd4b53 Mon Sep 17 00:00:00 2001 From: nick Date: Thu, 20 Mar 2025 15:13:04 -0700 Subject: [PATCH 02/27] bump dependencies --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 077a569fed..94de76b7d2 100644 --- a/go.mod +++ b/go.mod @@ -6,11 +6,11 @@ require ( github.com/PuerkitoBio/goquery v1.8.1 github.com/cockroachdb/apd/v2 v2.0.3-0.20200518165714-d020e156310a github.com/cockroachdb/errors v1.7.5 - github.com/dolthub/dolt/go v0.40.5-0.20250319205821-b44a6aec4642 + github.com/dolthub/dolt/go v0.40.5-0.20250320234743-571c89b04d7a github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 github.com/dolthub/go-icu-regex v0.0.0-20250303123116-549b8d7cad00 - github.com/dolthub/go-mysql-server v0.19.1-0.20250319194307-552313d92958 + github.com/dolthub/go-mysql-server v0.19.1-0.20250320045724-2ce4c019d3d9 github.com/dolthub/sqllogictest/go v0.0.0-20240618184124-ca47f9354216 github.com/dolthub/vitess v0.0.0-20250304211657-920ca9ec2b9a github.com/fatih/color v1.13.0 diff --git a/go.sum b/go.sum index 5ca6265d3d..726a168c99 100644 --- a/go.sum +++ b/go.sum @@ -256,8 +256,8 @@ github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5Xh github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dolthub/aws-sdk-go-ini-parser v0.0.0-20250305001723-2821c37f6c12 h1:IdqX7J8vi/Kn3T3Ee0VzqnLqwFmgA2hr8WZETPcQjfM= github.com/dolthub/aws-sdk-go-ini-parser v0.0.0-20250305001723-2821c37f6c12/go.mod h1:rN7X8BHwkjPcfMQQ2QTAq/xM3leUSGLfb+1Js7Y6TVo= -github.com/dolthub/dolt/go v0.40.5-0.20250319205821-b44a6aec4642 h1:UtDDGaY+HVIcJQhlBxMS64rpUxxMt1sHoEMdcuI5kGw= -github.com/dolthub/dolt/go v0.40.5-0.20250319205821-b44a6aec4642/go.mod h1:2i0lY83trfbZXINid/fZJnyRcRERWhunYjGnTkUfiqk= +github.com/dolthub/dolt/go v0.40.5-0.20250320234743-571c89b04d7a h1:IXOL1c1lmCs6NXAHtBijom5tGAzEQKqBI1WZ89H6pNA= +github.com/dolthub/dolt/go v0.40.5-0.20250320234743-571c89b04d7a/go.mod h1:XiUTq0QGRvTT9Aww8NHQWXi9haJf/Hmtell6Xv2iyN0= github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d h1:gO9+wrmNHXukPNCO1tpfCcXIdMlW/qppbUStfLvqz/U= github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d/go.mod h1:L5RDYZbC9BBWmoU2+TjTekeqqhFXX5EqH9ln00O0stY= github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 h1:u3PMzfF8RkKd3lB9pZ2bfn0qEG+1Gms9599cr0REMww= @@ -266,8 +266,8 @@ github.com/dolthub/fslock v0.0.3 h1:iLMpUIvJKMKm92+N1fmHVdxJP5NdyDK5bK7z7Ba2s2U= github.com/dolthub/fslock v0.0.3/go.mod h1:QWql+P17oAAMLnL4HGB5tiovtDuAjdDTPbuqx7bYfa0= github.com/dolthub/go-icu-regex v0.0.0-20250303123116-549b8d7cad00 h1:rh2ij2yTYKJWlX+c8XRg4H5OzqPewbU1lPK8pcfVmx8= github.com/dolthub/go-icu-regex v0.0.0-20250303123116-549b8d7cad00/go.mod h1:ylU4XjUpsMcvl/BKeRRMXSH7e7WBrPXdSLvnRJYrxEA= -github.com/dolthub/go-mysql-server v0.19.1-0.20250319194307-552313d92958 h1:A+PsDzrfkHkxn2w+PBAGNbeNYSEe6R4FA4IdJXZOMPE= -github.com/dolthub/go-mysql-server v0.19.1-0.20250319194307-552313d92958/go.mod h1:yr+Vv47/YLOKMgiEY+QxHTlbIVpTuiVtkEZ5l+xruY4= +github.com/dolthub/go-mysql-server v0.19.1-0.20250320045724-2ce4c019d3d9 h1:Nr4eDoWJtNIAXUv7HNe6XfsbGq5UYfD0SmezXV2XaeA= +github.com/dolthub/go-mysql-server v0.19.1-0.20250320045724-2ce4c019d3d9/go.mod h1:yr+Vv47/YLOKMgiEY+QxHTlbIVpTuiVtkEZ5l+xruY4= github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63 h1:OAsXLAPL4du6tfbBgK0xXHZkOlos63RdKYS3Sgw/dfI= github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63/go.mod h1:lV7lUeuDhH5thVGDCKXbatwKy2KW80L4rMT46n+Y2/Q= github.com/dolthub/ishell v0.0.0-20240701202509-2b217167d718 h1:lT7hE5k+0nkBdj/1UOSFwjWpNxf+LCApbRHgnCA17XE= From 73fdb67cc997a3081ed72fe49b4fe4c076b11351 Mon Sep 17 00:00:00 2001 From: nick Date: Thu, 20 Mar 2025 13:52:36 -0700 Subject: [PATCH 03/27] Implement toast types --- server/types/globals.go | 1 + 1 file changed, 1 insertion(+) diff --git a/server/types/globals.go b/server/types/globals.go index 0c5c1c5f2b..376eaa9bec 100644 --- a/server/types/globals.go +++ b/server/types/globals.go @@ -64,6 +64,7 @@ const ( TypeStorage_External TypeStorage = "e" TypeStorage_Main TypeStorage = "m" TypeStorage_Extended TypeStorage = "x" + TypeStorage_Toast TypeStorage = "t" ) // TypeType represents the type of types that can be created/used. From c827a0dcc3dc238778079d97520ed642064b3f53 Mon Sep 17 00:00:00 2001 From: nick Date: Tue, 25 Mar 2025 16:02:17 -0700 Subject: [PATCH 04/27] Bump Dolt dependency --- go.mod | 10 ++++------ go.sum | 20 ++++++++------------ server/tables/dtables/rebase.go | 30 +++++++++++++++++++++++++----- server/types/globals.go | 1 - 4 files changed, 37 insertions(+), 24 deletions(-) diff --git a/go.mod b/go.mod index 94de76b7d2..08d9912dc1 100644 --- a/go.mod +++ b/go.mod @@ -6,13 +6,13 @@ require ( github.com/PuerkitoBio/goquery v1.8.1 github.com/cockroachdb/apd/v2 v2.0.3-0.20200518165714-d020e156310a github.com/cockroachdb/errors v1.7.5 - github.com/dolthub/dolt/go v0.40.5-0.20250320234743-571c89b04d7a + github.com/dolthub/dolt/go v0.40.5-0.20250325183407-4b57304f9729 github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 - github.com/dolthub/go-icu-regex v0.0.0-20250303123116-549b8d7cad00 - github.com/dolthub/go-mysql-server v0.19.1-0.20250320045724-2ce4c019d3d9 + github.com/dolthub/go-icu-regex v0.0.0-20250319212010-451ea8d003fa + github.com/dolthub/go-mysql-server v0.19.1-0.20250325062716-9f11af5d6b61 github.com/dolthub/sqllogictest/go v0.0.0-20240618184124-ca47f9354216 - github.com/dolthub/vitess v0.0.0-20250304211657-920ca9ec2b9a + github.com/dolthub/vitess v0.0.0-20250320231804-0e77d549294c github.com/fatih/color v1.13.0 github.com/goccy/go-json v0.10.2 github.com/gogo/protobuf v1.3.2 @@ -122,7 +122,6 @@ require ( github.com/jackc/pgproto3/v2 v2.3.3 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect github.com/jackc/pgtype v1.14.0 // indirect - github.com/jpillora/backoff v1.0.0 // indirect github.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d // indirect github.com/kch42/buzhash v0.0.0-20160816060738-9bdec3dec7c6 // indirect github.com/klauspost/compress v1.10.5 // indirect @@ -180,7 +179,6 @@ require ( google.golang.org/genproto/googleapis/rpc v0.0.0-20230803162519-f966b187b2e5 // indirect google.golang.org/grpc v1.57.1 // indirect google.golang.org/protobuf v1.31.0 // indirect - gopkg.in/errgo.v2 v2.1.0 // indirect gopkg.in/go-jose/go-jose.v2 v2.6.3 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 726a168c99..4ef8f8a1e4 100644 --- a/go.sum +++ b/go.sum @@ -256,18 +256,18 @@ github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5Xh github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dolthub/aws-sdk-go-ini-parser v0.0.0-20250305001723-2821c37f6c12 h1:IdqX7J8vi/Kn3T3Ee0VzqnLqwFmgA2hr8WZETPcQjfM= github.com/dolthub/aws-sdk-go-ini-parser v0.0.0-20250305001723-2821c37f6c12/go.mod h1:rN7X8BHwkjPcfMQQ2QTAq/xM3leUSGLfb+1Js7Y6TVo= -github.com/dolthub/dolt/go v0.40.5-0.20250320234743-571c89b04d7a h1:IXOL1c1lmCs6NXAHtBijom5tGAzEQKqBI1WZ89H6pNA= -github.com/dolthub/dolt/go v0.40.5-0.20250320234743-571c89b04d7a/go.mod h1:XiUTq0QGRvTT9Aww8NHQWXi9haJf/Hmtell6Xv2iyN0= +github.com/dolthub/dolt/go v0.40.5-0.20250325183407-4b57304f9729 h1:BX9C/q6tlplDjMxzDtUACruz6i+AAFkXxmhXf/eh1ww= +github.com/dolthub/dolt/go v0.40.5-0.20250325183407-4b57304f9729/go.mod h1:+AyRwPFQyD3uIpRrE1KETU79n6xa/ZIkA2pMBcN6ows= github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d h1:gO9+wrmNHXukPNCO1tpfCcXIdMlW/qppbUStfLvqz/U= github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d/go.mod h1:L5RDYZbC9BBWmoU2+TjTekeqqhFXX5EqH9ln00O0stY= github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 h1:u3PMzfF8RkKd3lB9pZ2bfn0qEG+1Gms9599cr0REMww= github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2/go.mod h1:mIEZOHnFx4ZMQeawhw9rhsj+0zwQj7adVsnBX7t+eKY= github.com/dolthub/fslock v0.0.3 h1:iLMpUIvJKMKm92+N1fmHVdxJP5NdyDK5bK7z7Ba2s2U= github.com/dolthub/fslock v0.0.3/go.mod h1:QWql+P17oAAMLnL4HGB5tiovtDuAjdDTPbuqx7bYfa0= -github.com/dolthub/go-icu-regex v0.0.0-20250303123116-549b8d7cad00 h1:rh2ij2yTYKJWlX+c8XRg4H5OzqPewbU1lPK8pcfVmx8= -github.com/dolthub/go-icu-regex v0.0.0-20250303123116-549b8d7cad00/go.mod h1:ylU4XjUpsMcvl/BKeRRMXSH7e7WBrPXdSLvnRJYrxEA= -github.com/dolthub/go-mysql-server v0.19.1-0.20250320045724-2ce4c019d3d9 h1:Nr4eDoWJtNIAXUv7HNe6XfsbGq5UYfD0SmezXV2XaeA= -github.com/dolthub/go-mysql-server v0.19.1-0.20250320045724-2ce4c019d3d9/go.mod h1:yr+Vv47/YLOKMgiEY+QxHTlbIVpTuiVtkEZ5l+xruY4= +github.com/dolthub/go-icu-regex v0.0.0-20250319212010-451ea8d003fa h1:NFbzJ4wjWRz32nz2EimbrHpRx1Xt6k+IaR8N+j4x62k= +github.com/dolthub/go-icu-regex v0.0.0-20250319212010-451ea8d003fa/go.mod h1:ylU4XjUpsMcvl/BKeRRMXSH7e7WBrPXdSLvnRJYrxEA= +github.com/dolthub/go-mysql-server v0.19.1-0.20250325062716-9f11af5d6b61 h1:YUn8AfmXTprAdF5nwQSaO87Pt1r+D4TntojKV10KwOg= +github.com/dolthub/go-mysql-server v0.19.1-0.20250325062716-9f11af5d6b61/go.mod h1:WyimbJzsrNiYsQ7nfnXYLIoFAfNX0I7rHH1WaDt7faM= github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63 h1:OAsXLAPL4du6tfbBgK0xXHZkOlos63RdKYS3Sgw/dfI= github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63/go.mod h1:lV7lUeuDhH5thVGDCKXbatwKy2KW80L4rMT46n+Y2/Q= github.com/dolthub/ishell v0.0.0-20240701202509-2b217167d718 h1:lT7hE5k+0nkBdj/1UOSFwjWpNxf+LCApbRHgnCA17XE= @@ -276,8 +276,8 @@ github.com/dolthub/jsonpath v0.0.2-0.20240227200619-19675ab05c71 h1:bMGS25NWAGTE github.com/dolthub/jsonpath v0.0.2-0.20240227200619-19675ab05c71/go.mod h1:2/2zjLQ/JOOSbbSboojeg+cAwcRV0fDLzIiWch/lhqI= github.com/dolthub/sqllogictest/go v0.0.0-20240618184124-ca47f9354216 h1:JWkKRE4EHUcEVQCMRBej8DYxjYjRz/9MdF/NNQh0o70= github.com/dolthub/sqllogictest/go v0.0.0-20240618184124-ca47f9354216/go.mod h1:e/FIZVvT2IR53HBCAo41NjqgtEnjMJGKca3Y/dAmZaA= -github.com/dolthub/vitess v0.0.0-20250304211657-920ca9ec2b9a h1:HIH9g4z+yXr4DIFyT6L5qOIEGJ1zVtlj6baPyHAG4Yw= -github.com/dolthub/vitess v0.0.0-20250304211657-920ca9ec2b9a/go.mod h1:1gQZs/byeHLMSul3Lvl3MzioMtOW1je79QYGyi2fd70= +github.com/dolthub/vitess v0.0.0-20250320231804-0e77d549294c h1:Dv2DfEGb8WRBi8I5KF5Sy39TuZi/FI692mpobKWcv4g= +github.com/dolthub/vitess v0.0.0-20250320231804-0e77d549294c/go.mod h1:1gQZs/byeHLMSul3Lvl3MzioMtOW1je79QYGyi2fd70= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= @@ -585,7 +585,6 @@ github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfC github.com/jmoiron/sqlx v1.3.4 h1:wv+0IJZfL5z0uZoUjlpKgHkgaFSYD+r9CfrXjEXsO7w= github.com/jmoiron/sqlx v1.3.4/go.mod h1:2BljVx/86SuTyjE+aPYlHCTNvZrnJXghYGpNiXLBMCQ= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= @@ -934,8 +933,6 @@ github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyC github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= -github.com/vbauerster/mpb v3.4.0+incompatible h1:mfiiYw87ARaeRW6x5gWwYRUawxaW1tLAD8IceomUCNw= -github.com/vbauerster/mpb v3.4.0+incompatible/go.mod h1:zAHG26FUhVKETRu+MWqYXcI70POlC6N8up9p1dID7SU= github.com/vbauerster/mpb/v8 v8.0.2 h1:alVQG69Jg5+Ku9Hu1dakDx50uACEHnIzS7i356NQ/Vs= github.com/vbauerster/mpb/v8 v8.0.2/go.mod h1:Z9VJYIzXls7xZwirZjShGsi+14enzJhQfGyb/XZK0ZQ= github.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8= @@ -1422,7 +1419,6 @@ gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/errgo.v2 v2.1.0 h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= diff --git a/server/tables/dtables/rebase.go b/server/tables/dtables/rebase.go index e649b7d9c2..a8a4da93b7 100644 --- a/server/tables/dtables/rebase.go +++ b/server/tables/dtables/rebase.go @@ -15,6 +15,7 @@ package dtables import ( + "context" "strings" "github.com/cockroachdb/errors" @@ -52,15 +53,18 @@ func convertRebasePlanStepToRow(planMember rebase.RebasePlanStep) (sql.Row, erro } // convertRowToRebasePlanStep converts a sql.Row to a RebasePlanStep. -func convertRowToRebasePlanStep(row sql.Row) (rebase.RebasePlanStep, error) { +func convertRowToRebasePlanStep(ctx context.Context, row sql.Row) (rebase.RebasePlanStep, error) { order, ok := row[0].(float32) if !ok { return rebase.RebasePlanStep{}, errors.Errorf("invalid order value in rebase plan: %v (%T)", row[0], row[0]) } - rebaseAction, ok := row[1].(string) + rebaseAction, ok, err := sql.Unwrap[string](ctx, row[1]) + if err != nil { + return rebase.RebasePlanStep{}, err + } if !ok { - return rebase.RebasePlanStep{}, errors.Errorf("invalid enum value in rebase plan: %v (%T)", row[1], row[1]) + return rebase.RebasePlanStep{}, errors.Errorf("unexpected type for rebase action: expected string, got: %v (%T)", row[1], row[1]) } rebaseIdx := dprocedures.RebaseActionEnumType.IndexOf(rebaseAction) @@ -68,11 +72,27 @@ func convertRowToRebasePlanStep(row sql.Row) (rebase.RebasePlanStep, error) { return rebase.RebasePlanStep{}, errors.Errorf("invalid enum value in rebase plan: %v (%T)", row[1], row[1]) } + commitHash, ok, err := sql.Unwrap[string](ctx, row[2]) + if err != nil { + return rebase.RebasePlanStep{}, err + } + if !ok { + return rebase.RebasePlanStep{}, errors.Errorf("unexpected type for commit hash: expected string, got: %v (%T)", row[2], row[2]) + } + + commitMsg, ok, err := sql.Unwrap[string](ctx, row[3]) + if err != nil { + return rebase.RebasePlanStep{}, err + } + if !ok { + return rebase.RebasePlanStep{}, errors.Errorf("unexpected type for commit message: expected string, got: %v (%T)", row[3], row[3]) + } + return rebase.RebasePlanStep{ RebaseOrder: decimal.NewFromFloat32(order), Action: rebaseAction, - CommitHash: row[2].(string), - CommitMsg: row[3].(string), + CommitHash: commitHash, + CommitMsg: commitMsg, }, nil } diff --git a/server/types/globals.go b/server/types/globals.go index 376eaa9bec..0c5c1c5f2b 100644 --- a/server/types/globals.go +++ b/server/types/globals.go @@ -64,7 +64,6 @@ const ( TypeStorage_External TypeStorage = "e" TypeStorage_Main TypeStorage = "m" TypeStorage_Extended TypeStorage = "x" - TypeStorage_Toast TypeStorage = "t" ) // TypeType represents the type of types that can be created/used. From 40f254f2462cf9f41464d4cb4acabe504b2d6ada Mon Sep 17 00:00:00 2001 From: nick Date: Tue, 25 Mar 2025 16:12:38 -0700 Subject: [PATCH 05/27] Bump Dolt dependency --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 08d9912dc1..febdf81dac 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/PuerkitoBio/goquery v1.8.1 github.com/cockroachdb/apd/v2 v2.0.3-0.20200518165714-d020e156310a github.com/cockroachdb/errors v1.7.5 - github.com/dolthub/dolt/go v0.40.5-0.20250325183407-4b57304f9729 + github.com/dolthub/dolt/go v0.40.5-0.20250325185210-aa33d676a7ad github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 github.com/dolthub/go-icu-regex v0.0.0-20250319212010-451ea8d003fa diff --git a/go.sum b/go.sum index 4ef8f8a1e4..2de1334cf5 100644 --- a/go.sum +++ b/go.sum @@ -258,6 +258,8 @@ github.com/dolthub/aws-sdk-go-ini-parser v0.0.0-20250305001723-2821c37f6c12 h1:I github.com/dolthub/aws-sdk-go-ini-parser v0.0.0-20250305001723-2821c37f6c12/go.mod h1:rN7X8BHwkjPcfMQQ2QTAq/xM3leUSGLfb+1Js7Y6TVo= github.com/dolthub/dolt/go v0.40.5-0.20250325183407-4b57304f9729 h1:BX9C/q6tlplDjMxzDtUACruz6i+AAFkXxmhXf/eh1ww= github.com/dolthub/dolt/go v0.40.5-0.20250325183407-4b57304f9729/go.mod h1:+AyRwPFQyD3uIpRrE1KETU79n6xa/ZIkA2pMBcN6ows= +github.com/dolthub/dolt/go v0.40.5-0.20250325185210-aa33d676a7ad h1:bwu8pvonrc36kCXv1PusbXHJHE7JlUn5hTM04XGdXN4= +github.com/dolthub/dolt/go v0.40.5-0.20250325185210-aa33d676a7ad/go.mod h1:+AyRwPFQyD3uIpRrE1KETU79n6xa/ZIkA2pMBcN6ows= github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d h1:gO9+wrmNHXukPNCO1tpfCcXIdMlW/qppbUStfLvqz/U= github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d/go.mod h1:L5RDYZbC9BBWmoU2+TjTekeqqhFXX5EqH9ln00O0stY= github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 h1:u3PMzfF8RkKd3lB9pZ2bfn0qEG+1Gms9599cr0REMww= From d76148332f21dec72cfc2742d7f91ea1ff2ae1b3 Mon Sep 17 00:00:00 2001 From: nick Date: Tue, 25 Mar 2025 16:31:03 -0700 Subject: [PATCH 06/27] Remove unuesed test --- testing/go/enginetest/doltgres_engine_test.go | 6 ------ 1 file changed, 6 deletions(-) diff --git a/testing/go/enginetest/doltgres_engine_test.go b/testing/go/enginetest/doltgres_engine_test.go index f5ef408598..f087628160 100755 --- a/testing/go/enginetest/doltgres_engine_test.go +++ b/testing/go/enginetest/doltgres_engine_test.go @@ -1463,12 +1463,6 @@ func TestStatBranchTests(t *testing.T) { denginetest.RunStatBranchTests(t, harness) } -func TestStatsFunctions(t *testing.T) { - t.Skip() - harness := newDoltgresServerHarness(t) - denginetest.RunStatsFunctionsTest(t, harness) -} - func TestDiffTableFunction(t *testing.T) { t.Skip() harness := newDoltgresServerHarness(t) From aa51bc97913764d515d71dd178780b6ab840a51f Mon Sep 17 00:00:00 2001 From: nick Date: Tue, 25 Mar 2025 17:15:12 -0700 Subject: [PATCH 07/27] Bump Dolt --- go.mod | 6 +++--- go.sum | 14 ++++++-------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/go.mod b/go.mod index febdf81dac..371e3ae4b3 100644 --- a/go.mod +++ b/go.mod @@ -6,13 +6,13 @@ require ( github.com/PuerkitoBio/goquery v1.8.1 github.com/cockroachdb/apd/v2 v2.0.3-0.20200518165714-d020e156310a github.com/cockroachdb/errors v1.7.5 - github.com/dolthub/dolt/go v0.40.5-0.20250325185210-aa33d676a7ad + github.com/dolthub/dolt/go v0.40.5-0.20250326000911-7e97cd0eb91d github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 github.com/dolthub/go-icu-regex v0.0.0-20250319212010-451ea8d003fa - github.com/dolthub/go-mysql-server v0.19.1-0.20250325062716-9f11af5d6b61 + github.com/dolthub/go-mysql-server v0.19.1-0.20250326000213-8a2ead9ae1a0 github.com/dolthub/sqllogictest/go v0.0.0-20240618184124-ca47f9354216 - github.com/dolthub/vitess v0.0.0-20250320231804-0e77d549294c + github.com/dolthub/vitess v0.0.0-20250325024605-8131be3ca6d3 github.com/fatih/color v1.13.0 github.com/goccy/go-json v0.10.2 github.com/gogo/protobuf v1.3.2 diff --git a/go.sum b/go.sum index 2de1334cf5..25c004fa5b 100644 --- a/go.sum +++ b/go.sum @@ -256,10 +256,8 @@ github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5Xh github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dolthub/aws-sdk-go-ini-parser v0.0.0-20250305001723-2821c37f6c12 h1:IdqX7J8vi/Kn3T3Ee0VzqnLqwFmgA2hr8WZETPcQjfM= github.com/dolthub/aws-sdk-go-ini-parser v0.0.0-20250305001723-2821c37f6c12/go.mod h1:rN7X8BHwkjPcfMQQ2QTAq/xM3leUSGLfb+1Js7Y6TVo= -github.com/dolthub/dolt/go v0.40.5-0.20250325183407-4b57304f9729 h1:BX9C/q6tlplDjMxzDtUACruz6i+AAFkXxmhXf/eh1ww= -github.com/dolthub/dolt/go v0.40.5-0.20250325183407-4b57304f9729/go.mod h1:+AyRwPFQyD3uIpRrE1KETU79n6xa/ZIkA2pMBcN6ows= -github.com/dolthub/dolt/go v0.40.5-0.20250325185210-aa33d676a7ad h1:bwu8pvonrc36kCXv1PusbXHJHE7JlUn5hTM04XGdXN4= -github.com/dolthub/dolt/go v0.40.5-0.20250325185210-aa33d676a7ad/go.mod h1:+AyRwPFQyD3uIpRrE1KETU79n6xa/ZIkA2pMBcN6ows= +github.com/dolthub/dolt/go v0.40.5-0.20250326000911-7e97cd0eb91d h1:ZciDSoIpg8V+l+3BC2G+t8dJ7srYVzezFwdwJ0wJdmM= +github.com/dolthub/dolt/go v0.40.5-0.20250326000911-7e97cd0eb91d/go.mod h1:gK3ZtFttcK9099kGHEzwp3WqFrh4J5csgUs5TUylyko= github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d h1:gO9+wrmNHXukPNCO1tpfCcXIdMlW/qppbUStfLvqz/U= github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d/go.mod h1:L5RDYZbC9BBWmoU2+TjTekeqqhFXX5EqH9ln00O0stY= github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 h1:u3PMzfF8RkKd3lB9pZ2bfn0qEG+1Gms9599cr0REMww= @@ -268,8 +266,8 @@ github.com/dolthub/fslock v0.0.3 h1:iLMpUIvJKMKm92+N1fmHVdxJP5NdyDK5bK7z7Ba2s2U= github.com/dolthub/fslock v0.0.3/go.mod h1:QWql+P17oAAMLnL4HGB5tiovtDuAjdDTPbuqx7bYfa0= github.com/dolthub/go-icu-regex v0.0.0-20250319212010-451ea8d003fa h1:NFbzJ4wjWRz32nz2EimbrHpRx1Xt6k+IaR8N+j4x62k= github.com/dolthub/go-icu-regex v0.0.0-20250319212010-451ea8d003fa/go.mod h1:ylU4XjUpsMcvl/BKeRRMXSH7e7WBrPXdSLvnRJYrxEA= -github.com/dolthub/go-mysql-server v0.19.1-0.20250325062716-9f11af5d6b61 h1:YUn8AfmXTprAdF5nwQSaO87Pt1r+D4TntojKV10KwOg= -github.com/dolthub/go-mysql-server v0.19.1-0.20250325062716-9f11af5d6b61/go.mod h1:WyimbJzsrNiYsQ7nfnXYLIoFAfNX0I7rHH1WaDt7faM= +github.com/dolthub/go-mysql-server v0.19.1-0.20250326000213-8a2ead9ae1a0 h1:n7JU7BF+FGYo0Y1X3c6ysH3HyKNo8h/gLxhsUqiU6Qk= +github.com/dolthub/go-mysql-server v0.19.1-0.20250326000213-8a2ead9ae1a0/go.mod h1:vKBT9NZQDwG0Db6CT4D92Mw6kaJpWbIDy1hBX7XWUCA= github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63 h1:OAsXLAPL4du6tfbBgK0xXHZkOlos63RdKYS3Sgw/dfI= github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63/go.mod h1:lV7lUeuDhH5thVGDCKXbatwKy2KW80L4rMT46n+Y2/Q= github.com/dolthub/ishell v0.0.0-20240701202509-2b217167d718 h1:lT7hE5k+0nkBdj/1UOSFwjWpNxf+LCApbRHgnCA17XE= @@ -278,8 +276,8 @@ github.com/dolthub/jsonpath v0.0.2-0.20240227200619-19675ab05c71 h1:bMGS25NWAGTE github.com/dolthub/jsonpath v0.0.2-0.20240227200619-19675ab05c71/go.mod h1:2/2zjLQ/JOOSbbSboojeg+cAwcRV0fDLzIiWch/lhqI= github.com/dolthub/sqllogictest/go v0.0.0-20240618184124-ca47f9354216 h1:JWkKRE4EHUcEVQCMRBej8DYxjYjRz/9MdF/NNQh0o70= github.com/dolthub/sqllogictest/go v0.0.0-20240618184124-ca47f9354216/go.mod h1:e/FIZVvT2IR53HBCAo41NjqgtEnjMJGKca3Y/dAmZaA= -github.com/dolthub/vitess v0.0.0-20250320231804-0e77d549294c h1:Dv2DfEGb8WRBi8I5KF5Sy39TuZi/FI692mpobKWcv4g= -github.com/dolthub/vitess v0.0.0-20250320231804-0e77d549294c/go.mod h1:1gQZs/byeHLMSul3Lvl3MzioMtOW1je79QYGyi2fd70= +github.com/dolthub/vitess v0.0.0-20250325024605-8131be3ca6d3 h1:euU+adNAYw46Zcp1HnoaSDWhqjfaL8s/1SPU+i16gYM= +github.com/dolthub/vitess v0.0.0-20250325024605-8131be3ca6d3/go.mod h1:1gQZs/byeHLMSul3Lvl3MzioMtOW1je79QYGyi2fd70= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= From 4b7b1a5d43e906cbd6403d3ac5f5f3dfbda7a07e Mon Sep 17 00:00:00 2001 From: nick Date: Tue, 25 Mar 2025 18:07:55 -0700 Subject: [PATCH 08/27] Have DoltgresConfig implement servercfg.ServerConfig --- servercfg/config.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/servercfg/config.go b/servercfg/config.go index e27dd625c5..950ee36e9a 100755 --- a/servercfg/config.go +++ b/servercfg/config.go @@ -17,6 +17,7 @@ package servercfg import ( "path/filepath" "strings" + "time" "unicode" "unicode/utf8" @@ -570,3 +571,13 @@ func (cfg *DoltgresConfig) String() string { result := strings.Join(formatted, "\n") return result } + +// MaxWaitConnections implements servercfg.ServerConfig +func (cfg *DoltgresConfig) MaxWaitConnections() uint32 { + return servercfg.DefaultMaxWaitConnections +} + +// MaxWaitConnectionsTimeout implements servercfg.ServerConfig +func (cfg *DoltgresConfig) MaxWaitConnectionsTimeout() time.Duration { + return servercfg.DefaultMaxWaitConnectionsTimeout +} From 5be42ed1af499d2d833f42ee2a042dffdfbc847d Mon Sep 17 00:00:00 2001 From: nick Date: Tue, 25 Mar 2025 18:08:02 -0700 Subject: [PATCH 09/27] Bump Dolt --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 371e3ae4b3..a9496b2852 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/PuerkitoBio/goquery v1.8.1 github.com/cockroachdb/apd/v2 v2.0.3-0.20200518165714-d020e156310a github.com/cockroachdb/errors v1.7.5 - github.com/dolthub/dolt/go v0.40.5-0.20250326000911-7e97cd0eb91d + github.com/dolthub/dolt/go v0.40.5-0.20250326010431-2a25a1397c92 github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 github.com/dolthub/go-icu-regex v0.0.0-20250319212010-451ea8d003fa diff --git a/go.sum b/go.sum index 25c004fa5b..2f7fe378fd 100644 --- a/go.sum +++ b/go.sum @@ -256,8 +256,8 @@ github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5Xh github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dolthub/aws-sdk-go-ini-parser v0.0.0-20250305001723-2821c37f6c12 h1:IdqX7J8vi/Kn3T3Ee0VzqnLqwFmgA2hr8WZETPcQjfM= github.com/dolthub/aws-sdk-go-ini-parser v0.0.0-20250305001723-2821c37f6c12/go.mod h1:rN7X8BHwkjPcfMQQ2QTAq/xM3leUSGLfb+1Js7Y6TVo= -github.com/dolthub/dolt/go v0.40.5-0.20250326000911-7e97cd0eb91d h1:ZciDSoIpg8V+l+3BC2G+t8dJ7srYVzezFwdwJ0wJdmM= -github.com/dolthub/dolt/go v0.40.5-0.20250326000911-7e97cd0eb91d/go.mod h1:gK3ZtFttcK9099kGHEzwp3WqFrh4J5csgUs5TUylyko= +github.com/dolthub/dolt/go v0.40.5-0.20250326010431-2a25a1397c92 h1:Shj3SSeaRBtgO5Cf8aup4AbFP6jiFUL/c3zhppgSqXE= +github.com/dolthub/dolt/go v0.40.5-0.20250326010431-2a25a1397c92/go.mod h1:gK3ZtFttcK9099kGHEzwp3WqFrh4J5csgUs5TUylyko= github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d h1:gO9+wrmNHXukPNCO1tpfCcXIdMlW/qppbUStfLvqz/U= github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d/go.mod h1:L5RDYZbC9BBWmoU2+TjTekeqqhFXX5EqH9ln00O0stY= github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 h1:u3PMzfF8RkKd3lB9pZ2bfn0qEG+1Gms9599cr0REMww= From d2f356d3d91aae6bf04457173be8e6a5dcac58f4 Mon Sep 17 00:00:00 2001 From: nick Date: Wed, 26 Mar 2025 13:34:43 -0700 Subject: [PATCH 10/27] Support ExtendedAdaptiveEncoding --- go.mod | 2 +- go.sum | 8 ++++++++ server/functions/text.go | 2 +- server/tables/dtables/ignore.go | 4 ++-- server/types/type.go | 7 ++++++- 5 files changed, 18 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index a9496b2852..8116cae9ea 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/PuerkitoBio/goquery v1.8.1 github.com/cockroachdb/apd/v2 v2.0.3-0.20200518165714-d020e156310a github.com/cockroachdb/errors v1.7.5 - github.com/dolthub/dolt/go v0.40.5-0.20250326010431-2a25a1397c92 + github.com/dolthub/dolt/go v0.40.5-0.20250326030620-b891619f33c3 github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 github.com/dolthub/go-icu-regex v0.0.0-20250319212010-451ea8d003fa diff --git a/go.sum b/go.sum index 2f7fe378fd..77af1f5a12 100644 --- a/go.sum +++ b/go.sum @@ -258,6 +258,14 @@ github.com/dolthub/aws-sdk-go-ini-parser v0.0.0-20250305001723-2821c37f6c12 h1:I github.com/dolthub/aws-sdk-go-ini-parser v0.0.0-20250305001723-2821c37f6c12/go.mod h1:rN7X8BHwkjPcfMQQ2QTAq/xM3leUSGLfb+1Js7Y6TVo= github.com/dolthub/dolt/go v0.40.5-0.20250326010431-2a25a1397c92 h1:Shj3SSeaRBtgO5Cf8aup4AbFP6jiFUL/c3zhppgSqXE= github.com/dolthub/dolt/go v0.40.5-0.20250326010431-2a25a1397c92/go.mod h1:gK3ZtFttcK9099kGHEzwp3WqFrh4J5csgUs5TUylyko= +github.com/dolthub/dolt/go v0.40.5-0.20250326015434-f51f76799371 h1:u1DmDadjQ/0Lm7m48HVIrvM2dMqJCSjURiEoGWZuGfY= +github.com/dolthub/dolt/go v0.40.5-0.20250326015434-f51f76799371/go.mod h1:gK3ZtFttcK9099kGHEzwp3WqFrh4J5csgUs5TUylyko= +github.com/dolthub/dolt/go v0.40.5-0.20250326020945-0288089bccba h1:VtWVYpzz/c4qtYChyC+o4qhO/3KaFp6eReHwT5vDVcA= +github.com/dolthub/dolt/go v0.40.5-0.20250326020945-0288089bccba/go.mod h1:gK3ZtFttcK9099kGHEzwp3WqFrh4J5csgUs5TUylyko= +github.com/dolthub/dolt/go v0.40.5-0.20250326022130-20f6062615bd h1:1XqgmT2PeiXZSm5nnxITEUB6fyv7DhOJi2hdAjzA64s= +github.com/dolthub/dolt/go v0.40.5-0.20250326022130-20f6062615bd/go.mod h1:gK3ZtFttcK9099kGHEzwp3WqFrh4J5csgUs5TUylyko= +github.com/dolthub/dolt/go v0.40.5-0.20250326030620-b891619f33c3 h1:ZhukoW+JszXvcjb1bjajbgyGULrUpFpfB415R7b0Dyg= +github.com/dolthub/dolt/go v0.40.5-0.20250326030620-b891619f33c3/go.mod h1:gK3ZtFttcK9099kGHEzwp3WqFrh4J5csgUs5TUylyko= github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d h1:gO9+wrmNHXukPNCO1tpfCcXIdMlW/qppbUStfLvqz/U= github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d/go.mod h1:L5RDYZbC9BBWmoU2+TjTekeqqhFXX5EqH9ln00O0stY= github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 h1:u3PMzfF8RkKd3lB9pZ2bfn0qEG+1Gms9599cr0REMww= diff --git a/server/functions/text.go b/server/functions/text.go index 8c419daad6..d7f7be3e20 100644 --- a/server/functions/text.go +++ b/server/functions/text.go @@ -51,7 +51,7 @@ var textout = framework.Function1{ Parameters: [1]*pgtypes.DoltgresType{pgtypes.Text}, Strict: true, Callable: func(ctx *sql.Context, _ [2]*pgtypes.DoltgresType, val any) (any, error) { - return val.(string), nil + return val, nil }, } diff --git a/server/tables/dtables/ignore.go b/server/tables/dtables/ignore.go index 67e009f583..0107996bc0 100644 --- a/server/tables/dtables/ignore.go +++ b/server/tables/dtables/ignore.go @@ -62,13 +62,13 @@ func convertTupleToIgnoreBoolean(ctx context.Context, valueDesc val.TupleDesc, v func getIgnoreTablePatternKey(ctx context.Context, keyDesc val.TupleDesc, keyTuple val.Tuple) (string, error) { extendedTuple := val.NewTupleDescriptorWithArgs( val.TupleDescriptorArgs{Comparator: keyDesc.Comparator(), Handlers: keyDesc.Handlers}, - val.Type{Enc: val.ExtendedAddrEnc, Nullable: false}, + val.Type{Enc: val.ExtendedAdaptiveEnc, Nullable: false}, ) if !keyDesc.Equals(extendedTuple) { return "", fmt.Errorf("dolt_ignore had unexpected key type, this should never happen") } - keyAddr, ok := keyDesc.GetExtendedAddr(0, keyTuple) + keyAddr, ok := keyDesc.GetExtendedAdaptiveValue(0, keyTuple) if !ok { return "", fmt.Errorf("could not read pattern") } diff --git a/server/types/type.go b/server/types/type.go index 2c4a3a7bcd..9aa4ed49b7 100644 --- a/server/types/type.go +++ b/server/types/type.go @@ -466,7 +466,12 @@ func (t *DoltgresType) IoOutput(ctx *sql.Context, val any) (string, error) { if err != nil { return "", err } - return o.(string), nil + var ok bool + os, ok, err := sql.Unwrap[string](ctx, o) + if !ok { + return "", fmt.Errorf("unexpected type for io output, expected string, got %T", val) + } + return os, err } // IsArrayType returns true if the type is of 'array' category From 16ca335e252e1f7b5ad22dafd5e106bfd546099a Mon Sep 17 00:00:00 2001 From: nick Date: Wed, 26 Mar 2025 14:34:26 -0700 Subject: [PATCH 11/27] Update dolt_statistics test: it's sensitive to chunk boundaries, and fewer chunks means fewer buckets. --- testing/go/dolt_tables_test.go | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/testing/go/dolt_tables_test.go b/testing/go/dolt_tables_test.go index 13d7ba0fd7..e5deade420 100755 --- a/testing/go/dolt_tables_test.go +++ b/testing/go/dolt_tables_test.go @@ -1763,30 +1763,25 @@ func TestUserSpaceDoltTables(t *testing.T) { { Query: `SELECT database_name, table_name, index_name, row_count, distinct_count, columns, upper_bound, upper_bound_cnt FROM dolt_statistics ORDER BY index_name, row_count`, Expected: []sql.Row{ - {"postgres", "horses", "horses_name_idx", 70, 1, "name", "Steve", 70}, - {"postgres", "horses", "horses_name_idx", 126, 1, "name", "Steve", 126}, - {"postgres", "horses", "horses_name_idx", 141, 1, "name", "Steve", 141}, - {"postgres", "horses", "horses_name_idx", 146, 1, "name", "Steve", 146}, - {"postgres", "horses", "horses_name_idx", 160, 1, "name", "Steve", 160}, - {"postgres", "horses", "horses_name_idx", 165, 1, "name", "Steve", 165}, - {"postgres", "horses", "horses_name_idx", 192, 1, "name", "Steve", 192}, + {"postgres", "horses", "horses_name_idx", 62, 1, "name", "Steve", 62}, + {"postgres", "horses", "horses_name_idx", 212, 1, "name", "Steve", 212}, + {"postgres", "horses", "horses_name_idx", 214, 1, "name", "Steve", 214}, + {"postgres", "horses", "horses_name_idx", 239, 1, "name", "Steve", 239}, + {"postgres", "horses", "horses_name_idx", 273, 1, "name", "Steve", 273}, {"postgres", "horses", "primary", 46, 46, "id", "1000", 1}, - {"postgres", "horses", "primary", 76, 76, "id", "954", 1}, - {"postgres", "horses", "primary", 89, 89, "id", "547", 1}, - {"postgres", "horses", "primary", 117, 117, "id", "117", 1}, - {"postgres", "horses", "primary", 149, 149, "id", "458", 1}, - {"postgres", "horses", "primary", 162, 162, "id", "709", 1}, - {"postgres", "horses", "primary", 169, 169, "id", "878", 1}, - {"postgres", "horses", "primary", 192, 192, "id", "309", 1}, + {"postgres", "horses", "primary", 203, 203, "id", "954", 1}, + {"postgres", "horses", "primary", 204, 204, "id", "751", 1}, + {"postgres", "horses", "primary", 226, 226, "id", "547", 1}, + {"postgres", "horses", "primary", 321, 321, "id", "321", 1}, }, }, { Query: `SELECT count(*) FROM dolt_statistics`, - Expected: []sql.Row{{15}}, + Expected: []sql.Row{{10}}, }, { Query: `SELECT count(*) FROM public.dolt_statistics`, - Expected: []sql.Row{{15}}, + Expected: []sql.Row{{10}}, }, { Query: `SELECT dolt_statistics.index_name FROM public.dolt_statistics GROUP BY index_name ORDER BY index_name`, From cd6d074f63b5888affa73f3db911c67fa2a7ded0 Mon Sep 17 00:00:00 2001 From: nick Date: Thu, 27 Mar 2025 15:54:56 -0700 Subject: [PATCH 12/27] Add flag for unwrapping values in doltgres tests. --- testing/go/enginetest/doltgres_harness_test.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/testing/go/enginetest/doltgres_harness_test.go b/testing/go/enginetest/doltgres_harness_test.go index b068134acd..8a363770aa 100644 --- a/testing/go/enginetest/doltgres_harness_test.go +++ b/testing/go/enginetest/doltgres_harness_test.go @@ -356,7 +356,7 @@ func (d *DoltgresHarness) SnapshotTable(db sql.VersionedDatabase, tableName stri panic("implement me") } -func (d *DoltgresHarness) EvaluateQueryResults(t *testing.T, expected []sql.Row, expectedCols []*sql.Column, sch sql.Schema, rows []sql.Row, q string) { +func (d *DoltgresHarness) EvaluateQueryResults(t *testing.T, expected []sql.Row, expectedCols []*sql.Column, sch sql.Schema, rows []sql.Row, q string, unwrapValues bool) { widenedRows := enginetest.WidenRows(t, sch, rows) widenedExpected := enginetest.WidenRows(t, sch, expected) @@ -369,11 +369,19 @@ func (d *DoltgresHarness) EvaluateQueryResults(t *testing.T, expected []sql.Row, for _, widenedRow := range widenedRows { for i, val := range widenedRow { - switch val.(type) { + switch v := val.(type) { case time.Time: if setZeroTime { widenedRow[i] = time.Unix(0, 0).UTC() } + case sql.AnyWrapper: + if unwrapValues { + var err error + widenedRow[i], err = sql.UnwrapAny(context.Background(), v) + require.NoError(t, err) + } else { + widenedRow[i] = v.Hash() + } } } } From e9fad880543548c63962cecfdb8da3d14ee11047 Mon Sep 17 00:00:00 2001 From: nick Date: Thu, 27 Mar 2025 15:56:30 -0700 Subject: [PATCH 13/27] Bump dolt dependency. --- go.mod | 8 ++++---- go.sum | 24 ++++++++---------------- 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/go.mod b/go.mod index 8116cae9ea..d2742cf7f8 100644 --- a/go.mod +++ b/go.mod @@ -6,11 +6,11 @@ require ( github.com/PuerkitoBio/goquery v1.8.1 github.com/cockroachdb/apd/v2 v2.0.3-0.20200518165714-d020e156310a github.com/cockroachdb/errors v1.7.5 - github.com/dolthub/dolt/go v0.40.5-0.20250326030620-b891619f33c3 + github.com/dolthub/dolt/go v0.40.5-0.20250327233129-1b20b2c343b0 github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 - github.com/dolthub/go-icu-regex v0.0.0-20250319212010-451ea8d003fa - github.com/dolthub/go-mysql-server v0.19.1-0.20250326000213-8a2ead9ae1a0 + github.com/dolthub/go-icu-regex v0.0.0-20250327004329-6799764f2dad + github.com/dolthub/go-mysql-server v0.19.1-0.20250327232646-0dc98df3ff7e github.com/dolthub/sqllogictest/go v0.0.0-20240618184124-ca47f9354216 github.com/dolthub/vitess v0.0.0-20250325024605-8131be3ca6d3 github.com/fatih/color v1.13.0 @@ -99,7 +99,7 @@ require ( github.com/go-kit/kit v0.10.0 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-sql-driver/mysql v1.7.2-0.20231213112541-0004702b931d // indirect + github.com/go-sql-driver/mysql v1.9.1 // indirect github.com/gocraft/dbr/v2 v2.7.2 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect diff --git a/go.sum b/go.sum index 77af1f5a12..0fe9e7fa75 100644 --- a/go.sum +++ b/go.sum @@ -256,26 +256,18 @@ github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5Xh github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dolthub/aws-sdk-go-ini-parser v0.0.0-20250305001723-2821c37f6c12 h1:IdqX7J8vi/Kn3T3Ee0VzqnLqwFmgA2hr8WZETPcQjfM= github.com/dolthub/aws-sdk-go-ini-parser v0.0.0-20250305001723-2821c37f6c12/go.mod h1:rN7X8BHwkjPcfMQQ2QTAq/xM3leUSGLfb+1Js7Y6TVo= -github.com/dolthub/dolt/go v0.40.5-0.20250326010431-2a25a1397c92 h1:Shj3SSeaRBtgO5Cf8aup4AbFP6jiFUL/c3zhppgSqXE= -github.com/dolthub/dolt/go v0.40.5-0.20250326010431-2a25a1397c92/go.mod h1:gK3ZtFttcK9099kGHEzwp3WqFrh4J5csgUs5TUylyko= -github.com/dolthub/dolt/go v0.40.5-0.20250326015434-f51f76799371 h1:u1DmDadjQ/0Lm7m48HVIrvM2dMqJCSjURiEoGWZuGfY= -github.com/dolthub/dolt/go v0.40.5-0.20250326015434-f51f76799371/go.mod h1:gK3ZtFttcK9099kGHEzwp3WqFrh4J5csgUs5TUylyko= -github.com/dolthub/dolt/go v0.40.5-0.20250326020945-0288089bccba h1:VtWVYpzz/c4qtYChyC+o4qhO/3KaFp6eReHwT5vDVcA= -github.com/dolthub/dolt/go v0.40.5-0.20250326020945-0288089bccba/go.mod h1:gK3ZtFttcK9099kGHEzwp3WqFrh4J5csgUs5TUylyko= -github.com/dolthub/dolt/go v0.40.5-0.20250326022130-20f6062615bd h1:1XqgmT2PeiXZSm5nnxITEUB6fyv7DhOJi2hdAjzA64s= -github.com/dolthub/dolt/go v0.40.5-0.20250326022130-20f6062615bd/go.mod h1:gK3ZtFttcK9099kGHEzwp3WqFrh4J5csgUs5TUylyko= -github.com/dolthub/dolt/go v0.40.5-0.20250326030620-b891619f33c3 h1:ZhukoW+JszXvcjb1bjajbgyGULrUpFpfB415R7b0Dyg= -github.com/dolthub/dolt/go v0.40.5-0.20250326030620-b891619f33c3/go.mod h1:gK3ZtFttcK9099kGHEzwp3WqFrh4J5csgUs5TUylyko= +github.com/dolthub/dolt/go v0.40.5-0.20250327233129-1b20b2c343b0 h1:jaUle6KuIo9OHD5If3DmlBwiAz7BjUNYsN4OJ7R9mMI= +github.com/dolthub/dolt/go v0.40.5-0.20250327233129-1b20b2c343b0/go.mod h1:eZKXRpA3E/2NYWoa087eJ2h/FsOTsgRxMWW4IVkiYcA= github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d h1:gO9+wrmNHXukPNCO1tpfCcXIdMlW/qppbUStfLvqz/U= github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d/go.mod h1:L5RDYZbC9BBWmoU2+TjTekeqqhFXX5EqH9ln00O0stY= github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 h1:u3PMzfF8RkKd3lB9pZ2bfn0qEG+1Gms9599cr0REMww= github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2/go.mod h1:mIEZOHnFx4ZMQeawhw9rhsj+0zwQj7adVsnBX7t+eKY= github.com/dolthub/fslock v0.0.3 h1:iLMpUIvJKMKm92+N1fmHVdxJP5NdyDK5bK7z7Ba2s2U= github.com/dolthub/fslock v0.0.3/go.mod h1:QWql+P17oAAMLnL4HGB5tiovtDuAjdDTPbuqx7bYfa0= -github.com/dolthub/go-icu-regex v0.0.0-20250319212010-451ea8d003fa h1:NFbzJ4wjWRz32nz2EimbrHpRx1Xt6k+IaR8N+j4x62k= -github.com/dolthub/go-icu-regex v0.0.0-20250319212010-451ea8d003fa/go.mod h1:ylU4XjUpsMcvl/BKeRRMXSH7e7WBrPXdSLvnRJYrxEA= -github.com/dolthub/go-mysql-server v0.19.1-0.20250326000213-8a2ead9ae1a0 h1:n7JU7BF+FGYo0Y1X3c6ysH3HyKNo8h/gLxhsUqiU6Qk= -github.com/dolthub/go-mysql-server v0.19.1-0.20250326000213-8a2ead9ae1a0/go.mod h1:vKBT9NZQDwG0Db6CT4D92Mw6kaJpWbIDy1hBX7XWUCA= +github.com/dolthub/go-icu-regex v0.0.0-20250327004329-6799764f2dad h1:66ZPawHszNu37VPQckdhX1BPPVzREsGgNxQeefnlm3g= +github.com/dolthub/go-icu-regex v0.0.0-20250327004329-6799764f2dad/go.mod h1:ylU4XjUpsMcvl/BKeRRMXSH7e7WBrPXdSLvnRJYrxEA= +github.com/dolthub/go-mysql-server v0.19.1-0.20250327232646-0dc98df3ff7e h1:n5DOJLE8fyk08la+tQRlBeRTm4d/DFZkHLGzBWWc+7Q= +github.com/dolthub/go-mysql-server v0.19.1-0.20250327232646-0dc98df3ff7e/go.mod h1:lt1xwT52nowkmcVWaFpLShNUrScQV8EQ1aNNGGMduRE= github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63 h1:OAsXLAPL4du6tfbBgK0xXHZkOlos63RdKYS3Sgw/dfI= github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63/go.mod h1:lV7lUeuDhH5thVGDCKXbatwKy2KW80L4rMT46n+Y2/Q= github.com/dolthub/ishell v0.0.0-20240701202509-2b217167d718 h1:lT7hE5k+0nkBdj/1UOSFwjWpNxf+LCApbRHgnCA17XE= @@ -357,8 +349,8 @@ github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/go-sql-driver/mysql v1.7.2-0.20231213112541-0004702b931d h1:QQP1nE4qh5aHTGvI1LgOFxZYVxYoGeMfbNHikogPyoA= -github.com/go-sql-driver/mysql v1.7.2-0.20231213112541-0004702b931d/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= +github.com/go-sql-driver/mysql v1.9.1 h1:FrjNGn/BsJQjVRuSa8CBrM5BWA9BWoXXat3KrtSb/iI= +github.com/go-sql-driver/mysql v1.9.1/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= From 67eb58ea5f76d1ea70ec6c12565bd6a1ffbb15cd Mon Sep 17 00:00:00 2001 From: nick Date: Fri, 28 Mar 2025 14:44:05 -0700 Subject: [PATCH 14/27] Bump Dolt dependency. --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index d2742cf7f8..ea2878cd11 100644 --- a/go.mod +++ b/go.mod @@ -6,11 +6,11 @@ require ( github.com/PuerkitoBio/goquery v1.8.1 github.com/cockroachdb/apd/v2 v2.0.3-0.20200518165714-d020e156310a github.com/cockroachdb/errors v1.7.5 - github.com/dolthub/dolt/go v0.40.5-0.20250327233129-1b20b2c343b0 + github.com/dolthub/dolt/go v0.40.5-0.20250328214918-380c7af7adfd github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 github.com/dolthub/go-icu-regex v0.0.0-20250327004329-6799764f2dad - github.com/dolthub/go-mysql-server v0.19.1-0.20250327232646-0dc98df3ff7e + github.com/dolthub/go-mysql-server v0.19.1-0.20250328183909-92b97995c8e9 github.com/dolthub/sqllogictest/go v0.0.0-20240618184124-ca47f9354216 github.com/dolthub/vitess v0.0.0-20250325024605-8131be3ca6d3 github.com/fatih/color v1.13.0 diff --git a/go.sum b/go.sum index 0fe9e7fa75..633bc1ae37 100644 --- a/go.sum +++ b/go.sum @@ -256,8 +256,8 @@ github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5Xh github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dolthub/aws-sdk-go-ini-parser v0.0.0-20250305001723-2821c37f6c12 h1:IdqX7J8vi/Kn3T3Ee0VzqnLqwFmgA2hr8WZETPcQjfM= github.com/dolthub/aws-sdk-go-ini-parser v0.0.0-20250305001723-2821c37f6c12/go.mod h1:rN7X8BHwkjPcfMQQ2QTAq/xM3leUSGLfb+1Js7Y6TVo= -github.com/dolthub/dolt/go v0.40.5-0.20250327233129-1b20b2c343b0 h1:jaUle6KuIo9OHD5If3DmlBwiAz7BjUNYsN4OJ7R9mMI= -github.com/dolthub/dolt/go v0.40.5-0.20250327233129-1b20b2c343b0/go.mod h1:eZKXRpA3E/2NYWoa087eJ2h/FsOTsgRxMWW4IVkiYcA= +github.com/dolthub/dolt/go v0.40.5-0.20250328214918-380c7af7adfd h1:lBgYilwpygAb4ZmdygDd/qzS2IY5OOBWO2Z3sXE8kD0= +github.com/dolthub/dolt/go v0.40.5-0.20250328214918-380c7af7adfd/go.mod h1:HgQ+Hw+o6JQJa97qB+paPFBwX8crmp1T0Bt10D9mdl0= github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d h1:gO9+wrmNHXukPNCO1tpfCcXIdMlW/qppbUStfLvqz/U= github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d/go.mod h1:L5RDYZbC9BBWmoU2+TjTekeqqhFXX5EqH9ln00O0stY= github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 h1:u3PMzfF8RkKd3lB9pZ2bfn0qEG+1Gms9599cr0REMww= @@ -266,8 +266,8 @@ github.com/dolthub/fslock v0.0.3 h1:iLMpUIvJKMKm92+N1fmHVdxJP5NdyDK5bK7z7Ba2s2U= github.com/dolthub/fslock v0.0.3/go.mod h1:QWql+P17oAAMLnL4HGB5tiovtDuAjdDTPbuqx7bYfa0= github.com/dolthub/go-icu-regex v0.0.0-20250327004329-6799764f2dad h1:66ZPawHszNu37VPQckdhX1BPPVzREsGgNxQeefnlm3g= github.com/dolthub/go-icu-regex v0.0.0-20250327004329-6799764f2dad/go.mod h1:ylU4XjUpsMcvl/BKeRRMXSH7e7WBrPXdSLvnRJYrxEA= -github.com/dolthub/go-mysql-server v0.19.1-0.20250327232646-0dc98df3ff7e h1:n5DOJLE8fyk08la+tQRlBeRTm4d/DFZkHLGzBWWc+7Q= -github.com/dolthub/go-mysql-server v0.19.1-0.20250327232646-0dc98df3ff7e/go.mod h1:lt1xwT52nowkmcVWaFpLShNUrScQV8EQ1aNNGGMduRE= +github.com/dolthub/go-mysql-server v0.19.1-0.20250328183909-92b97995c8e9 h1:glPg5ahIRnSvzOv9Q8lMoDDRfZONgGBt6tg2MDYp14U= +github.com/dolthub/go-mysql-server v0.19.1-0.20250328183909-92b97995c8e9/go.mod h1:lt1xwT52nowkmcVWaFpLShNUrScQV8EQ1aNNGGMduRE= github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63 h1:OAsXLAPL4du6tfbBgK0xXHZkOlos63RdKYS3Sgw/dfI= github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63/go.mod h1:lV7lUeuDhH5thVGDCKXbatwKy2KW80L4rMT46n+Y2/Q= github.com/dolthub/ishell v0.0.0-20240701202509-2b217167d718 h1:lT7hE5k+0nkBdj/1UOSFwjWpNxf+LCApbRHgnCA17XE= From 6b2279e0d44d2d0b7030f36b999768cd7b6981c7 Mon Sep 17 00:00:00 2001 From: nick Date: Fri, 28 Mar 2025 14:44:29 -0700 Subject: [PATCH 15/27] Add adaptive encoding test. --- testing/go/enginetest/doltgres_engine_test.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/testing/go/enginetest/doltgres_engine_test.go b/testing/go/enginetest/doltgres_engine_test.go index f087628160..3e82f09b82 100755 --- a/testing/go/enginetest/doltgres_engine_test.go +++ b/testing/go/enginetest/doltgres_engine_test.go @@ -1972,6 +1972,11 @@ func TestStatsAutoRefreshConcurrency(t *testing.T) { t.Skip("port test from Dolt") } +func TestAdaptiveBigBlobs(t *testing.T) { + h := newDoltgresServerHarness(t) + denginetest.RunAdaptiveBigBlobsTest(t, h) +} + func skipPreparedTests(t *testing.T) { if skipPrepared { t.Skip("skip prepared") From aa607b2531bf3326f85e7bfd2346a82ed31c71b2 Mon Sep 17 00:00:00 2001 From: nick Date: Fri, 28 Mar 2025 14:51:39 -0700 Subject: [PATCH 16/27] Remove redundant definition of DoltgresConfig::MaxWaitConnections and DoltgresConfig::MaxWaitConnectionsTimeout --- servercfg/config.go | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/servercfg/config.go b/servercfg/config.go index f31a5aedd2..fe559ba576 100755 --- a/servercfg/config.go +++ b/servercfg/config.go @@ -579,13 +579,3 @@ func (cfg *DoltgresConfig) String() string { result := strings.Join(formatted, "\n") return result } - -// MaxWaitConnections implements servercfg.ServerConfig -func (cfg *DoltgresConfig) MaxWaitConnections() uint32 { - return servercfg.DefaultMaxWaitConnections -} - -// MaxWaitConnectionsTimeout implements servercfg.ServerConfig -func (cfg *DoltgresConfig) MaxWaitConnectionsTimeout() time.Duration { - return servercfg.DefaultMaxWaitConnectionsTimeout -} From 336747dde36d30f43b7ddba1ff3d323a7cc0e5b0 Mon Sep 17 00:00:00 2001 From: nick Date: Fri, 28 Mar 2025 15:03:52 -0700 Subject: [PATCH 17/27] Bump Dolt dependency --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index ea2878cd11..9adcbf19ca 100644 --- a/go.mod +++ b/go.mod @@ -6,11 +6,11 @@ require ( github.com/PuerkitoBio/goquery v1.8.1 github.com/cockroachdb/apd/v2 v2.0.3-0.20200518165714-d020e156310a github.com/cockroachdb/errors v1.7.5 - github.com/dolthub/dolt/go v0.40.5-0.20250328214918-380c7af7adfd + github.com/dolthub/dolt/go v0.40.5-0.20250401200315-e1c0525a600d github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 github.com/dolthub/go-icu-regex v0.0.0-20250327004329-6799764f2dad - github.com/dolthub/go-mysql-server v0.19.1-0.20250328183909-92b97995c8e9 + github.com/dolthub/go-mysql-server v0.19.1-0.20250401195558-87e8cfa1b6ed github.com/dolthub/sqllogictest/go v0.0.0-20240618184124-ca47f9354216 github.com/dolthub/vitess v0.0.0-20250325024605-8131be3ca6d3 github.com/fatih/color v1.13.0 diff --git a/go.sum b/go.sum index 633bc1ae37..b88693e6f0 100644 --- a/go.sum +++ b/go.sum @@ -256,8 +256,8 @@ github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5Xh github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dolthub/aws-sdk-go-ini-parser v0.0.0-20250305001723-2821c37f6c12 h1:IdqX7J8vi/Kn3T3Ee0VzqnLqwFmgA2hr8WZETPcQjfM= github.com/dolthub/aws-sdk-go-ini-parser v0.0.0-20250305001723-2821c37f6c12/go.mod h1:rN7X8BHwkjPcfMQQ2QTAq/xM3leUSGLfb+1Js7Y6TVo= -github.com/dolthub/dolt/go v0.40.5-0.20250328214918-380c7af7adfd h1:lBgYilwpygAb4ZmdygDd/qzS2IY5OOBWO2Z3sXE8kD0= -github.com/dolthub/dolt/go v0.40.5-0.20250328214918-380c7af7adfd/go.mod h1:HgQ+Hw+o6JQJa97qB+paPFBwX8crmp1T0Bt10D9mdl0= +github.com/dolthub/dolt/go v0.40.5-0.20250401200315-e1c0525a600d h1:tSnCqdR+s4D4nTCPYeY5VlHrDMEMdUhpoXnoqt0wQCA= +github.com/dolthub/dolt/go v0.40.5-0.20250401200315-e1c0525a600d/go.mod h1:KLGJEn7SEMg8oL5Asr/IQvphDem6xILaOI59dndv9bs= github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d h1:gO9+wrmNHXukPNCO1tpfCcXIdMlW/qppbUStfLvqz/U= github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d/go.mod h1:L5RDYZbC9BBWmoU2+TjTekeqqhFXX5EqH9ln00O0stY= github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 h1:u3PMzfF8RkKd3lB9pZ2bfn0qEG+1Gms9599cr0REMww= @@ -266,8 +266,8 @@ github.com/dolthub/fslock v0.0.3 h1:iLMpUIvJKMKm92+N1fmHVdxJP5NdyDK5bK7z7Ba2s2U= github.com/dolthub/fslock v0.0.3/go.mod h1:QWql+P17oAAMLnL4HGB5tiovtDuAjdDTPbuqx7bYfa0= github.com/dolthub/go-icu-regex v0.0.0-20250327004329-6799764f2dad h1:66ZPawHszNu37VPQckdhX1BPPVzREsGgNxQeefnlm3g= github.com/dolthub/go-icu-regex v0.0.0-20250327004329-6799764f2dad/go.mod h1:ylU4XjUpsMcvl/BKeRRMXSH7e7WBrPXdSLvnRJYrxEA= -github.com/dolthub/go-mysql-server v0.19.1-0.20250328183909-92b97995c8e9 h1:glPg5ahIRnSvzOv9Q8lMoDDRfZONgGBt6tg2MDYp14U= -github.com/dolthub/go-mysql-server v0.19.1-0.20250328183909-92b97995c8e9/go.mod h1:lt1xwT52nowkmcVWaFpLShNUrScQV8EQ1aNNGGMduRE= +github.com/dolthub/go-mysql-server v0.19.1-0.20250401195558-87e8cfa1b6ed h1:9qqVWN4M6v1Ktdrs5Xs7O3YwFZklXb5YkZ3JyduVaco= +github.com/dolthub/go-mysql-server v0.19.1-0.20250401195558-87e8cfa1b6ed/go.mod h1:lt1xwT52nowkmcVWaFpLShNUrScQV8EQ1aNNGGMduRE= github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63 h1:OAsXLAPL4du6tfbBgK0xXHZkOlos63RdKYS3Sgw/dfI= github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63/go.mod h1:lV7lUeuDhH5thVGDCKXbatwKy2KW80L4rMT46n+Y2/Q= github.com/dolthub/ishell v0.0.0-20240701202509-2b217167d718 h1:lT7hE5k+0nkBdj/1UOSFwjWpNxf+LCApbRHgnCA17XE= From b959d6768afc2912d43600475bd13ca135063fbd Mon Sep 17 00:00:00 2001 From: nick Date: Fri, 28 Mar 2025 15:04:19 -0700 Subject: [PATCH 18/27] Update DoltgresHarness::EvaluateQueryResults --- testing/go/enginetest/doltgres_harness_test.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/testing/go/enginetest/doltgres_harness_test.go b/testing/go/enginetest/doltgres_harness_test.go index 8a363770aa..76cfb435e2 100644 --- a/testing/go/enginetest/doltgres_harness_test.go +++ b/testing/go/enginetest/doltgres_harness_test.go @@ -18,6 +18,7 @@ import ( "context" gosql "database/sql" "fmt" + "github.com/dolthub/go-mysql-server/enginetest/queries" "io" "regexp" "runtime" @@ -356,7 +357,7 @@ func (d *DoltgresHarness) SnapshotTable(db sql.VersionedDatabase, tableName stri panic("implement me") } -func (d *DoltgresHarness) EvaluateQueryResults(t *testing.T, expected []sql.Row, expectedCols []*sql.Column, sch sql.Schema, rows []sql.Row, q string, unwrapValues bool) { +func (d *DoltgresHarness) EvaluateQueryResults(t *testing.T, expected []sql.Row, expectedCols []*sql.Column, sch sql.Schema, rows []sql.Row, q string, wrapBehavior queries.WrapBehavior) { widenedRows := enginetest.WidenRows(t, sch, rows) widenedExpected := enginetest.WidenRows(t, sch, expected) @@ -375,11 +376,12 @@ func (d *DoltgresHarness) EvaluateQueryResults(t *testing.T, expected []sql.Row, widenedRow[i] = time.Unix(0, 0).UTC() } case sql.AnyWrapper: - if unwrapValues { + switch wrapBehavior { + case queries.WrapBehavior_Unwrap: var err error widenedRow[i], err = sql.UnwrapAny(context.Background(), v) require.NoError(t, err) - } else { + case queries.WrapBehavior_Hash: widenedRow[i] = v.Hash() } } From d7a72f93a8ff4d48a095b4b6c2503191879cac84 Mon Sep 17 00:00:00 2001 From: nick Date: Mon, 31 Mar 2025 19:44:03 -0700 Subject: [PATCH 19/27] Add unwrapping of wrapped types. --- server/functions/binary/equal.go | 2 +- server/functions/text.go | 9 ++++++++- server/types/type.go | 12 ++++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/server/functions/binary/equal.go b/server/functions/binary/equal.go index cd2100f005..f8d6a58f47 100644 --- a/server/functions/binary/equal.go +++ b/server/functions/binary/equal.go @@ -418,7 +418,7 @@ var text_eq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Text, pgtypes.Text}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Text.Compare(val1.(string), val2.(string)) + res, err := pgtypes.Text.Compare(val1, val2) return res == 0, err }, } diff --git a/server/functions/text.go b/server/functions/text.go index d7f7be3e20..8a0a01740c 100644 --- a/server/functions/text.go +++ b/server/functions/text.go @@ -15,6 +15,7 @@ package functions import ( + "fmt" "github.com/dolthub/go-mysql-server/sql" "github.com/dolthub/doltgresql/utils" @@ -78,7 +79,13 @@ var textsend = framework.Function1{ Parameters: [1]*pgtypes.DoltgresType{pgtypes.Text}, Strict: true, Callable: func(ctx *sql.Context, _ [2]*pgtypes.DoltgresType, val any) (any, error) { - str := val.(string) + str, ok, err := sql.Unwrap[string](ctx, val) + if err != nil { + return nil, err + } + if !ok { + return nil, fmt.Errorf(`"textsend" requires a string argument, got %T`, val) + } writer := utils.NewWriter(uint64(len(str) + 4)) writer.String(str) return writer.Data(), nil diff --git a/server/types/type.go b/server/types/type.go index 9aa4ed49b7..fd1868d548 100644 --- a/server/types/type.go +++ b/server/types/type.go @@ -155,6 +155,18 @@ func (t *DoltgresType) CollationCoercibility(ctx *sql.Context) (collation sql.Co // Compare implements the types.ExtendedType interface. func (t *DoltgresType) Compare(v1 interface{}, v2 interface{}) (int, error) { + // TODO: Add context parameter to Type::Compare + ctx := context.Background() + var err error + v1, err = sql.UnwrapAny(ctx, v1) + if err != nil { + return 0, err + } + v2, err = sql.UnwrapAny(ctx, v2) + if err != nil { + return 0, err + } + // TODO: use IoCompare if v1 == nil && v2 == nil { return 0, nil From f1510fd1ea33434efa252a9da231ed8c3d4c3295 Mon Sep 17 00:00:00 2001 From: nick Date: Mon, 31 Mar 2025 19:44:15 -0700 Subject: [PATCH 20/27] Add adaptive encoding test. --- testing/go/adaptive_encoding_test.go | 184 +++++++++++++++++++++++++++ testing/go/testdata/fullSize | Bin 0 -> 4000 bytes testing/go/testdata/halfSize | Bin 0 -> 2000 bytes testing/go/testdata/tinyFile | Bin 0 -> 10 bytes 4 files changed, 184 insertions(+) create mode 100644 testing/go/adaptive_encoding_test.go create mode 100644 testing/go/testdata/fullSize create mode 100644 testing/go/testdata/halfSize create mode 100644 testing/go/testdata/tinyFile diff --git a/testing/go/adaptive_encoding_test.go b/testing/go/adaptive_encoding_test.go new file mode 100644 index 0000000000..532cf07428 --- /dev/null +++ b/testing/go/adaptive_encoding_test.go @@ -0,0 +1,184 @@ +// Copyright 2025 Dolthub, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package _go + +import ( + "fmt" + "github.com/dolthub/go-mysql-server/enginetest/scriptgen/setup" + "testing" + + "github.com/dolthub/go-mysql-server/sql" +) + +// This is a correctness test based on the AdaptiveEncodingTest in Dolt. +// Because Doltgres serializes its results over a Postgres connection, we can't inspect the encoding +// of the result row. But we can still confirm that using adaptable encoding doesn't change any expected behavior. + +func makeTestBytes(size int, firstbyte byte) []byte { + bytes := make([]byte, size) + bytes[0] = firstbyte + return bytes +} + +// A 4000 byte file starting with 0x01 and then consisting of all zeros. +// This is larger than default target tuple size for outlining adaptive types. +// We expect a tuple to always store this value out-of-band +var fullSizeString = string(makeTestBytes(4000, 1)) + +// A 2000 byte file starting with 0x02 and then consisting of all zeros. +// This is over half of the default target tuple size for outlining adaptive types. +// We expect a tuple to be able to store this value inline once, but not twice. +var halfSizeString = string(makeTestBytes(2000, 2)) + +// A 10 byte file starting with 0x03 and then consisting of 10 zero bytes. +// This is file is smaller than an address hash. +// We expect a tuple to never store this value out-of-band. +var tinyString = string(makeTestBytes(10, 3)) + +func TestAdaptiveEncoding(t *testing.T) { + columnType := "text" + fullSizeOutOfLineRepr := fullSizeString + RunScripts(t, []ScriptTest{ + { + Name: "Adaptive Encoding With One Column", + SetUpScript: setup.SetupScript{ + fmt.Sprintf(`create table blobt (i char(1) primary key, b %s);`, columnType), + fmt.Sprintf(`create table blobt2 (i char(2) primary key, b1 %s, b2 %s);`, columnType, columnType), + `insert into blobt values + ('F', LOAD_FILE('testdata/fullSize')), + ('H', LOAD_FILE('testdata/halfSize')), + ('T', LOAD_FILE('testdata/tinyFile'))`, + }, + Assertions: []ScriptTestAssertion{ + { + Query: "select b from blobt where i = 'F'", + Expected: []sql.Row{{fullSizeString}}, + }, + { + // Files that can fit within a tuple are stored inline. + Query: "select b from blobt where i = 'H'", + Expected: []sql.Row{{halfSizeString}}, + }, + { + // An inlined adaptive column can be used in a filter. + Query: "select i from blobt where b = LOAD_FILE('testdata/fullSize')", + Expected: []sql.Row{{"F"}}, + }, + { + // An out-of-line adaptive column can be used in a filter. + Query: "select i from blobt where b = LOAD_FILE('testdata/halfSize')", + Expected: []sql.Row{{"H"}}, + }, + }, + }, + { + Name: "Adaptive Encoding With Two Columns", + SetUpScript: setup.SetupScript{ + fmt.Sprintf(`create table blobt2 (i char(2) primary key, b1 %s, b2 %s);`, columnType, columnType), + `insert into blobt2 values + ('FF', LOAD_FILE('testdata/fullSize'), LOAD_FILE('testdata/fullSize')), + ('HF', LOAD_FILE('testdata/halfSize'), LOAD_FILE('testdata/fullSize')), + ('TF', LOAD_FILE('testdata/tinyFile'), LOAD_FILE('testdata/fullSize')), + ('FH', LOAD_FILE('testdata/fullSize'), LOAD_FILE('testdata/halfSize')), + ('HH', LOAD_FILE('testdata/halfSize'), LOAD_FILE('testdata/halfSize')), + ('TH', LOAD_FILE('testdata/tinyFile'), LOAD_FILE('testdata/halfSize')), + ('FT', LOAD_FILE('testdata/fullSize'), LOAD_FILE('testdata/tinyFile')), + ('HT', LOAD_FILE('testdata/halfSize'), LOAD_FILE('testdata/tinyFile')), + ('TT', LOAD_FILE('testdata/tinyFile'), LOAD_FILE('testdata/tinyFile'))`, + }, + Assertions: []ScriptTestAssertion{ + { + // When a tuple with multiple adaptive columns is too large, columns are moved out-of-band from left to right. + // However, strings smaller than the address size (20 bytes) are never stored out-of-band. + Query: "select i, b1, b2 from blobt2", + Expected: []sql.Row{ + {"FF", fullSizeString, fullSizeString}, + {"HF", halfSizeString, fullSizeString}, + {"TF", tinyString, fullSizeString}, + {"FH", fullSizeString, halfSizeString}, + {"HH", halfSizeString, halfSizeString}, + {"TH", tinyString, halfSizeString}, + {"FT", fullSizeString, tinyString}, + {"HT", halfSizeString, tinyString}, + {"TT", tinyString, tinyString}, + }, + }, + { + // An adaptive column can be used in a filter when it doesn't have the same encoding in all rows. + Query: "select i from blobt2 where b1 = LOAD_FILE('testdata/halfSize')", + Expected: []sql.Row{{"HF"}, {"HH"}, {"HT"}}, + }, + { + // An adaptive column can be used in a filter when it doesn't have the same encoding in all rows. + Query: "select i from blobt2 where b2 = LOAD_FILE('testdata/halfSize')", + Expected: []sql.Row{{"FH"}, {"HH"}, {"TH"}}, + }, + { + // Test creating an index on an adaptive encoding column, matching against out-of-band values + Query: "CREATE INDEX bidx ON blobt2 (b1)", + }, + { + Query: "select i, b1 FROM blobt2 WHERE b1 LIKE '\x01%'", + Expected: []sql.Row{ + {"FF", fullSizeOutOfLineRepr}, + {"FH", fullSizeOutOfLineRepr}, + {"FT", fullSizeOutOfLineRepr}, + }, + }, + { + // Test creating an index on an adaptive encoding column, matching against inline values + Query: "CREATE INDEX bidx2 ON blobt2 (b2)", + }, + { + Query: "select i, b2 FROM blobt2 WHERE b2 LIKE '\x02%'", + Expected: []sql.Row{ + {"FH", halfSizeString}, + {"HH", halfSizeString}, + {"TH", halfSizeString}, + }, + }, + { + // Tuples containing adaptive columns should be independent of how the tuple was created. + // And adaptive values are always outlined starting from the left. + // This means that in a table with two adaptive columns where both columns were previously stored out-of line, + // Decreasing the size of the second column may allow both columns to be stored inline. + Query: "UPDATE blobt2 SET b2 = LOAD_FILE('testdata/tinyFile') WHERE i = 'HH'", + }, + { + Query: "select i, b1, b2 from blobt2 where i = 'HH'", + Expected: []sql.Row{{"HH", halfSizeString, tinyString}}, + }, + { + // Similar to the above, dropping a column can change whether the other column is inlined. + Query: "ALTER TABLE blobt2 DROP COLUMN b2", + }, + { + Query: "select i, b1 from blobt2", + Expected: []sql.Row{ + {"FF", fullSizeString}, + {"HF", halfSizeString}, + {"TF", tinyString}, + {"FH", fullSizeString}, + {"HH", halfSizeString}, + {"TH", tinyString}, + {"FT", fullSizeString}, + {"HT", halfSizeString}, + {"TT", tinyString}, + }, + }, + }, + }, + }) +} diff --git a/testing/go/testdata/fullSize b/testing/go/testdata/fullSize new file mode 100644 index 0000000000000000000000000000000000000000..16dbdf1accd7dd884face01e7cb9ba55c21ed761 GIT binary patch literal 4000 ocmeIuAprmY00JQWf7%%qm_UO80|pEjFkrxd0RsjM7%=c27#~0Y0ssI2 literal 0 HcmV?d00001 diff --git a/testing/go/testdata/halfSize b/testing/go/testdata/halfSize new file mode 100644 index 0000000000000000000000000000000000000000..81cdd4b869b4606be5a27e4253caedf1ecc0f4f3 GIT binary patch literal 2000 ccmZQ#7zLvtFd71*Aut*OqaiRF0z*9n02goo0{{R3 literal 0 HcmV?d00001 diff --git a/testing/go/testdata/tinyFile b/testing/go/testdata/tinyFile new file mode 100644 index 0000000000000000000000000000000000000000..f1e88109a30fb4797a787d0b6f3654c61d78c626 GIT binary patch literal 10 KcmZQ(fB^siC;$Wi literal 0 HcmV?d00001 From b7829352a576a23d852f71ddb07d65f0f1b03800 Mon Sep 17 00:00:00 2001 From: nick Date: Tue, 1 Apr 2025 16:58:03 -0700 Subject: [PATCH 21/27] Propagate context parameter --- server/analyzer/type_sanitizer.go | 21 +++--- server/config/parameters.go | 8 +-- server/expression/gms_cast.go | 8 +-- server/functions/array.go | 2 +- server/functions/binary/equal.go | 72 +++++++++---------- server/functions/binary/greater.go | 66 ++++++++--------- server/functions/binary/greater_equal.go | 66 ++++++++--------- server/functions/binary/less.go | 66 ++++++++--------- server/functions/binary/less_equal.go | 66 ++++++++--------- server/functions/binary/not_equal.go | 72 +++++++++---------- server/functions/dolt_procedures.go | 2 +- .../functions/framework/compiled_function.go | 2 +- server/types/type.go | 8 +-- 13 files changed, 229 insertions(+), 230 deletions(-) diff --git a/server/analyzer/type_sanitizer.go b/server/analyzer/type_sanitizer.go index 63bea00df7..3fb9f734ba 100644 --- a/server/analyzer/type_sanitizer.go +++ b/server/analyzer/type_sanitizer.go @@ -15,6 +15,7 @@ package analyzer import ( + "context" "strconv" "time" @@ -43,7 +44,7 @@ func TypeSanitizer(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope // These should eventually be replaced with Doltgres-equivalents over time, rendering this function unnecessary. switch expr := expr.(type) { case *expression.Literal: - return typeSanitizerLiterals(expr) + return typeSanitizerLiterals(ctx, expr) case *expression.Not, *expression.And, *expression.Or, *expression.Like: return pgexprs.NewGMSCast(expr), transform.NewTree, nil case sql.FunctionExpression: @@ -83,14 +84,14 @@ func TypeSanitizer(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope } // typeSanitizerLiterals handles literal expressions for TypeSanitizer. -func typeSanitizerLiterals(gmsLiteral *expression.Literal) (sql.Expression, transform.TreeIdentity, error) { +func typeSanitizerLiterals(ctx context.Context, gmsLiteral *expression.Literal) (sql.Expression, transform.TreeIdentity, error) { // GMS may resolve Doltgres literals and then stick them in GMS literals, so we have to account for that here if doltgresType, ok := gmsLiteral.Type().(*pgtypes.DoltgresType); ok { return pgexprs.NewUnsafeLiteral(gmsLiteral.Value(), doltgresType), transform.NewTree, nil } switch gmsLiteral.Type().Type() { case query.Type_INT8, query.Type_INT16, query.Type_YEAR: - newVal, _, err := types.Int16.Convert(gmsLiteral.Value()) + newVal, _, err := types.Int16.Convert(ctx, gmsLiteral.Value()) if err != nil { return nil, transform.NewTree, err } @@ -99,7 +100,7 @@ func typeSanitizerLiterals(gmsLiteral *expression.Literal) (sql.Expression, tran } return pgexprs.NewRawLiteralInt16(newVal.(int16)), transform.NewTree, nil case query.Type_INT24, query.Type_INT32: - newVal, _, err := types.Int32.Convert(gmsLiteral.Value()) + newVal, _, err := types.Int32.Convert(ctx, gmsLiteral.Value()) if err != nil { return nil, transform.NewTree, err } @@ -108,7 +109,7 @@ func typeSanitizerLiterals(gmsLiteral *expression.Literal) (sql.Expression, tran } return pgexprs.NewRawLiteralInt32(newVal.(int32)), transform.NewTree, nil case query.Type_INT64, query.Type_ENUM: - newVal, _, err := types.Int64.Convert(gmsLiteral.Value()) + newVal, _, err := types.Int64.Convert(ctx, gmsLiteral.Value()) if err != nil { return nil, transform.NewTree, err } @@ -117,7 +118,7 @@ func typeSanitizerLiterals(gmsLiteral *expression.Literal) (sql.Expression, tran } return pgexprs.NewRawLiteralInt64(newVal.(int64)), transform.NewTree, nil case query.Type_UINT8, query.Type_UINT16, query.Type_UINT24, query.Type_UINT32: - newVal, _, err := types.Uint32.Convert(gmsLiteral.Value()) + newVal, _, err := types.Uint32.Convert(ctx, gmsLiteral.Value()) if err != nil { return nil, transform.NewTree, err } @@ -126,7 +127,7 @@ func typeSanitizerLiterals(gmsLiteral *expression.Literal) (sql.Expression, tran } return pgexprs.NewRawLiteralInt64(int64(newVal.(uint32))), transform.NewTree, nil case query.Type_UINT64, query.Type_SET: - newVal, _, err := types.Uint64.Convert(gmsLiteral.Value()) + newVal, _, err := types.Uint64.Convert(ctx, gmsLiteral.Value()) if err != nil { return nil, transform.NewTree, err } @@ -136,7 +137,7 @@ func typeSanitizerLiterals(gmsLiteral *expression.Literal) (sql.Expression, tran newLiteral, err := pgexprs.NewNumericLiteral(strconv.FormatUint(newVal.(uint64), 10)) return newLiteral, transform.NewTree, err case query.Type_FLOAT32: - newVal, _, err := types.Float32.Convert(gmsLiteral.Value()) + newVal, _, err := types.Float32.Convert(ctx, gmsLiteral.Value()) if err != nil { return nil, transform.NewTree, err } @@ -145,7 +146,7 @@ func typeSanitizerLiterals(gmsLiteral *expression.Literal) (sql.Expression, tran } return pgexprs.NewRawLiteralFloat32(newVal.(float32)), transform.NewTree, nil case query.Type_FLOAT64: - newVal, _, err := types.Float64.Convert(gmsLiteral.Value()) + newVal, _, err := types.Float64.Convert(ctx, gmsLiteral.Value()) if err != nil { return nil, transform.NewTree, err } @@ -160,7 +161,7 @@ func typeSanitizerLiterals(gmsLiteral *expression.Literal) (sql.Expression, tran } return pgexprs.NewRawLiteralNumeric(dec), transform.NewTree, nil case query.Type_DATE, query.Type_DATETIME, query.Type_TIMESTAMP: - newVal, _, err := types.Datetime.Convert(gmsLiteral.Value()) + newVal, _, err := types.Datetime.Convert(ctx, gmsLiteral.Value()) if err != nil { return nil, transform.NewTree, err } diff --git a/server/config/parameters.go b/server/config/parameters.go index 2b7f8b68a1..b638ecbf89 100644 --- a/server/config/parameters.go +++ b/server/config/parameters.go @@ -99,12 +99,12 @@ func (p *Parameter) GetDefault() any { } // InitValue implements sql.SystemVariable. -func (p *Parameter) InitValue(val any, global bool) (sql.SystemVarValue, error) { +func (p *Parameter) InitValue(ctx *sql.Context, val any, global bool) (sql.SystemVarValue, error) { if global { // This shouldn't happen, but sanity check return sql.SystemVarValue{}, sql.ErrSystemVariableSessionOnly.New(p.Name) } - convertedVal, _, err := p.Type.Convert(val) + convertedVal, _, err := p.Type.Convert(ctx, val) if err != nil { return sql.SystemVarValue{}, err } @@ -123,7 +123,7 @@ func (p *Parameter) InitValue(val any, global bool) (sql.SystemVarValue, error) } // SetValue implements sql.SystemVariable. -func (p *Parameter) SetValue(val any, global bool) (sql.SystemVarValue, error) { +func (p *Parameter) SetValue(ctx *sql.Context, val any, global bool) (sql.SystemVarValue, error) { if global { // This shouldn't happen, but sanity check return sql.SystemVarValue{}, sql.ErrSystemVariableSessionOnly.New(p.Name) @@ -132,7 +132,7 @@ func (p *Parameter) SetValue(val any, global bool) (sql.SystemVarValue, error) { return sql.SystemVarValue{}, ErrCannotChangeAtRuntime.New(p.Name) } // TODO: Do parsing of units for memory and time parameters - return p.InitValue(val, global) + return p.InitValue(ctx, val, global) } // IsReadOnly implements sql.SystemVariable. diff --git a/server/expression/gms_cast.go b/server/expression/gms_cast.go index f0e2ede0d8..19e92c783c 100644 --- a/server/expression/gms_cast.go +++ b/server/expression/gms_cast.go @@ -80,7 +80,7 @@ func (c *GMSCast) Eval(ctx *sql.Context, row sql.Row) (any, error) { // boolean result, we want to convert it from an int back to a boolean. case query.Type_INT8: if sqlTyp == types.Boolean { - newVal, _, err := types.Int32.Convert(val) + newVal, _, err := types.Int32.Convert(ctx, val) if err != nil { return nil, err } @@ -97,7 +97,7 @@ func (c *GMSCast) Eval(ctx *sql.Context, row sql.Row) (any, error) { // Although Int16 would be a closer fit for some of these types, in Postgres, Int32 is generally the smallest value // used. To maximize overall compatibility, it's better to interpret these values as Int32 instead. case query.Type_INT16, query.Type_INT24, query.Type_INT32, query.Type_YEAR, query.Type_ENUM: - newVal, _, err := types.Int32.Convert(val) + newVal, _, err := types.Int32.Convert(ctx, val) if err != nil { return nil, err } @@ -106,7 +106,7 @@ func (c *GMSCast) Eval(ctx *sql.Context, row sql.Row) (any, error) { } return newVal, nil case query.Type_INT64, query.Type_SET, query.Type_BIT, query.Type_UINT8, query.Type_UINT16, query.Type_UINT24, query.Type_UINT32: - newVal, _, err := types.Int64.Convert(val) + newVal, _, err := types.Int64.Convert(ctx, val) if err != nil { return nil, err } @@ -145,7 +145,7 @@ func (c *GMSCast) Eval(ctx *sql.Context, row sql.Row) (any, error) { } return nil, errors.Errorf("GMSCast expected type `Timespan`, got `%T`", val) case query.Type_CHAR, query.Type_VARCHAR, query.Type_TEXT, query.Type_BINARY, query.Type_VARBINARY, query.Type_BLOB: - newVal, _, err := types.LongText.Convert(val) + newVal, _, err := types.LongText.Convert(ctx, val) if err != nil { return nil, err } diff --git a/server/functions/array.go b/server/functions/array.go index b456edf458..013c07e394 100644 --- a/server/functions/array.go +++ b/server/functions/array.go @@ -272,7 +272,7 @@ var btarraycmp = framework.Function2{ bb := val2.([]any) minLength := utils.Min(len(ab), len(bb)) for i := 0; i < minLength; i++ { - res, err := at.ArrayBaseType().Compare(ab[i], bb[i]) + res, err := at.ArrayBaseType().Compare(ctx, ab[i], bb[i]) if err != nil { return 0, err } diff --git a/server/functions/binary/equal.go b/server/functions/binary/equal.go index f8d6a58f47..ed3bbbcd51 100644 --- a/server/functions/binary/equal.go +++ b/server/functions/binary/equal.go @@ -81,7 +81,7 @@ var booleq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Bool, pgtypes.Bool}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Bool.Compare(val1.(bool), val2.(bool)) + res, err := pgtypes.Bool.Compare(ctx, val1.(bool), val2.(bool)) return res == 0, err }, } @@ -93,7 +93,7 @@ var bpchareq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.BpChar, pgtypes.BpChar}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.BpChar.Compare(val1.(string), val2.(string)) + res, err := pgtypes.BpChar.Compare(ctx, val1.(string), val2.(string)) return res == 0, err }, } @@ -105,7 +105,7 @@ var byteaeq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Bytea, pgtypes.Bytea}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Bytea.Compare(val1.([]byte), val2.([]byte)) + res, err := pgtypes.Bytea.Compare(ctx, val1.([]byte), val2.([]byte)) return res == 0, err }, } @@ -117,7 +117,7 @@ var chareq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.InternalChar, pgtypes.InternalChar}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.InternalChar.Compare(val1.(string), val2.(string)) + res, err := pgtypes.InternalChar.Compare(ctx, val1.(string), val2.(string)) return res == 0, err }, } @@ -129,7 +129,7 @@ var date_eq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Date, pgtypes.Date}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Date.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.Date.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res == 0, err }, } @@ -166,7 +166,7 @@ var enum_eq = framework.Function2{ Strict: true, Callable: func(ctx *sql.Context, t [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { // TODO: if given types are not the same enum type, it cannot compare - res, err := t[0].Compare(val1, val2) + res, err := t[0].Compare(ctx, val1, val2) return res == 0, err }, } @@ -178,7 +178,7 @@ var float4eq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Float32, pgtypes.Float32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Float32.Compare(val1.(float32), val2.(float32)) + res, err := pgtypes.Float32.Compare(ctx, val1.(float32), val2.(float32)) return res == 0, err }, } @@ -190,7 +190,7 @@ var float48eq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Float32, pgtypes.Float64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Float64.Compare(float64(val1.(float32)), val2.(float64)) + res, err := pgtypes.Float64.Compare(ctx, float64(val1.(float32)), val2.(float64)) return res == 0, err }, } @@ -202,7 +202,7 @@ var float84eq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Float64, pgtypes.Float32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Float64.Compare(val1.(float64), float64(val2.(float32))) + res, err := pgtypes.Float64.Compare(ctx, val1.(float64), float64(val2.(float32))) return res == 0, err }, } @@ -214,7 +214,7 @@ var float8eq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Float64, pgtypes.Float64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Float64.Compare(val1.(float64), val2.(float64)) + res, err := pgtypes.Float64.Compare(ctx, val1.(float64), val2.(float64)) return res == 0, err }, } @@ -226,7 +226,7 @@ var int2eq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int16, pgtypes.Int16}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int16.Compare(val1.(int16), val2.(int16)) + res, err := pgtypes.Int16.Compare(ctx, val1.(int16), val2.(int16)) return res == 0, err }, } @@ -238,7 +238,7 @@ var int24eq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int16, pgtypes.Int32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int32.Compare(int32(val1.(int16)), val2.(int32)) + res, err := pgtypes.Int32.Compare(ctx, int32(val1.(int16)), val2.(int32)) return res == 0, err }, } @@ -250,7 +250,7 @@ var int28eq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int16, pgtypes.Int64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(int64(val1.(int16)), val2.(int64)) + res, err := pgtypes.Int64.Compare(ctx, int64(val1.(int16)), val2.(int64)) return res == 0, err }, } @@ -262,7 +262,7 @@ var int42eq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int32, pgtypes.Int16}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int32.Compare(val1.(int32), int32(val2.(int16))) + res, err := pgtypes.Int32.Compare(ctx, val1.(int32), int32(val2.(int16))) return res == 0, err }, } @@ -274,7 +274,7 @@ var int4eq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int32, pgtypes.Int32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int32.Compare(val1.(int32), val2.(int32)) + res, err := pgtypes.Int32.Compare(ctx, val1.(int32), val2.(int32)) return res == 0, err }, } @@ -286,7 +286,7 @@ var int48eq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int32, pgtypes.Int64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(int64(val1.(int32)), val2.(int64)) + res, err := pgtypes.Int64.Compare(ctx, int64(val1.(int32)), val2.(int64)) return res == 0, err }, } @@ -298,7 +298,7 @@ var int82eq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int64, pgtypes.Int16}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(val1.(int64), int64(val2.(int16))) + res, err := pgtypes.Int64.Compare(ctx, val1.(int64), int64(val2.(int16))) return res == 0, err }, } @@ -310,7 +310,7 @@ var int84eq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int64, pgtypes.Int32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(val1.(int64), int64(val2.(int32))) + res, err := pgtypes.Int64.Compare(ctx, val1.(int64), int64(val2.(int32))) return res == 0, err }, } @@ -322,7 +322,7 @@ var int8eq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int64, pgtypes.Int64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(val1.(int64), val2.(int64)) + res, err := pgtypes.Int64.Compare(ctx, val1.(int64), val2.(int64)) return res == 0, err }, } @@ -334,7 +334,7 @@ var interval_eq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Interval, pgtypes.Interval}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Interval.Compare(val1.(duration.Duration), val2.(duration.Duration)) + res, err := pgtypes.Interval.Compare(ctx, val1.(duration.Duration), val2.(duration.Duration)) return res == 0, err }, } @@ -346,7 +346,7 @@ var jsonb_eq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.JsonB, pgtypes.JsonB}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.JsonB.Compare(val1.(pgtypes.JsonDocument), val2.(pgtypes.JsonDocument)) + res, err := pgtypes.JsonB.Compare(ctx, val1.(pgtypes.JsonDocument), val2.(pgtypes.JsonDocument)) return res == 0, err }, } @@ -358,7 +358,7 @@ var nameeq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Name, pgtypes.Name}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Name.Compare(val1.(string), val2.(string)) + res, err := pgtypes.Name.Compare(ctx, val1.(string), val2.(string)) return res == 0, err }, } @@ -370,7 +370,7 @@ var nameeqtext = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Name, pgtypes.Text}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Text.Compare(val1.(string), val2.(string)) + res, err := pgtypes.Text.Compare(ctx, val1.(string), val2.(string)) return res == 0, err }, } @@ -382,7 +382,7 @@ var numeric_eq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Numeric, pgtypes.Numeric}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Numeric.Compare(val1.(decimal.Decimal), val2.(decimal.Decimal)) + res, err := pgtypes.Numeric.Compare(ctx, val1.(decimal.Decimal), val2.(decimal.Decimal)) return res == 0, err }, } @@ -394,7 +394,7 @@ var oideq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Oid, pgtypes.Oid}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Oid.Compare(val1.(id.Id), val2.(id.Id)) + res, err := pgtypes.Oid.Compare(ctx, val1.(id.Id), val2.(id.Id)) return res == 0, err }, } @@ -406,7 +406,7 @@ var texteqname = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Text, pgtypes.Name}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Text.Compare(val1.(string), val2.(string)) + res, err := pgtypes.Text.Compare(ctx, val1.(string), val2.(string)) return res == 0, err }, } @@ -418,7 +418,7 @@ var text_eq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Text, pgtypes.Text}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Text.Compare(val1, val2) + res, err := pgtypes.Text.Compare(ctx, val1, val2) return res == 0, err }, } @@ -430,7 +430,7 @@ var time_eq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Time, pgtypes.Time}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Time.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.Time.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res == 0, err }, } @@ -454,7 +454,7 @@ var timestamp_eq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Timestamp, pgtypes.Timestamp}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Timestamp.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.Timestamp.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res == 0, err }, } @@ -466,7 +466,7 @@ var timestamp_eq_timestamptz = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Timestamp, pgtypes.TimestampTZ}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.TimestampTZ.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.TimestampTZ.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res == 0, err }, } @@ -490,7 +490,7 @@ var timestamptz_eq_timestamp = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.TimestampTZ, pgtypes.Timestamp}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.TimestampTZ.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.TimestampTZ.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res == 0, err }, } @@ -502,7 +502,7 @@ var timestamptz_eq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.TimestampTZ, pgtypes.TimestampTZ}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.TimestampTZ.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.TimestampTZ.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res == 0, err }, } @@ -514,7 +514,7 @@ var timetz_eq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.TimeTZ, pgtypes.TimeTZ}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.TimeTZ.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.TimeTZ.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res == 0, err }, } @@ -526,7 +526,7 @@ var uuid_eq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Uuid, pgtypes.Uuid}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Uuid.Compare(val1.(uuid.UUID), val2.(uuid.UUID)) + res, err := pgtypes.Uuid.Compare(ctx, val1.(uuid.UUID), val2.(uuid.UUID)) return res == 0, err }, } @@ -539,7 +539,7 @@ var xideqint4 = framework.Function2{ Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { // TODO: investigate the edge cases - res, err := pgtypes.Int64.Compare(int64(val1.(uint32)), int64(val2.(int32))) + res, err := pgtypes.Int64.Compare(ctx, int64(val1.(uint32)), int64(val2.(int32))) return res == 0, err }, } @@ -551,7 +551,7 @@ var xideq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Xid, pgtypes.Xid}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Xid.Compare(val1.(uint32), val2.(uint32)) + res, err := pgtypes.Xid.Compare(ctx, val1.(uint32), val2.(uint32)) return res == 0, err }, } diff --git a/server/functions/binary/greater.go b/server/functions/binary/greater.go index b7f5b6226b..d1fccd8ddf 100644 --- a/server/functions/binary/greater.go +++ b/server/functions/binary/greater.go @@ -80,7 +80,7 @@ var boolgt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Bool, pgtypes.Bool}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Bool.Compare(val1.(bool), val2.(bool)) + res, err := pgtypes.Bool.Compare(ctx, val1.(bool), val2.(bool)) return res == 1, err }, } @@ -92,7 +92,7 @@ var bpchargt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.BpChar, pgtypes.BpChar}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.BpChar.Compare(val1.(string), val2.(string)) + res, err := pgtypes.BpChar.Compare(ctx, val1.(string), val2.(string)) return res == 1, err }, } @@ -104,7 +104,7 @@ var byteagt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Bytea, pgtypes.Bytea}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Bytea.Compare(val1.([]byte), val2.([]byte)) + res, err := pgtypes.Bytea.Compare(ctx, val1.([]byte), val2.([]byte)) return res == 1, err }, } @@ -116,7 +116,7 @@ var chargt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.InternalChar, pgtypes.InternalChar}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.InternalChar.Compare(val1.(string), val2.(string)) + res, err := pgtypes.InternalChar.Compare(ctx, val1.(string), val2.(string)) return res == 1, err }, } @@ -128,7 +128,7 @@ var date_gt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Date, pgtypes.Date}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Date.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.Date.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res == 1, err }, } @@ -164,7 +164,7 @@ var enum_gt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.AnyEnum, pgtypes.AnyEnum}, Strict: true, Callable: func(ctx *sql.Context, t [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := t[0].Compare(val1, val2) + res, err := t[0].Compare(ctx, val1, val2) return res == 1, err }, } @@ -176,7 +176,7 @@ var float4gt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Float32, pgtypes.Float32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Float32.Compare(val1.(float32), val2.(float32)) + res, err := pgtypes.Float32.Compare(ctx, val1.(float32), val2.(float32)) return res == 1, err }, } @@ -188,7 +188,7 @@ var float48gt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Float32, pgtypes.Float64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Float64.Compare(float64(val1.(float32)), val2.(float64)) + res, err := pgtypes.Float64.Compare(ctx, float64(val1.(float32)), val2.(float64)) return res == 1, err }, } @@ -200,7 +200,7 @@ var float84gt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Float64, pgtypes.Float32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Float64.Compare(val1.(float64), float64(val2.(float32))) + res, err := pgtypes.Float64.Compare(ctx, val1.(float64), float64(val2.(float32))) return res == 1, err }, } @@ -212,7 +212,7 @@ var float8gt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Float64, pgtypes.Float64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Float64.Compare(val1.(float64), val2.(float64)) + res, err := pgtypes.Float64.Compare(ctx, val1.(float64), val2.(float64)) return res == 1, err }, } @@ -224,7 +224,7 @@ var int2gt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int16, pgtypes.Int16}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int16.Compare(val1.(int16), val2.(int16)) + res, err := pgtypes.Int16.Compare(ctx, val1.(int16), val2.(int16)) return res == 1, err }, } @@ -236,7 +236,7 @@ var int24gt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int16, pgtypes.Int32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int32.Compare(int32(val1.(int16)), val2.(int32)) + res, err := pgtypes.Int32.Compare(ctx, int32(val1.(int16)), val2.(int32)) return res == 1, err }, } @@ -248,7 +248,7 @@ var int28gt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int16, pgtypes.Int64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(int64(val1.(int16)), val2.(int64)) + res, err := pgtypes.Int64.Compare(ctx, int64(val1.(int16)), val2.(int64)) return res == 1, err }, } @@ -260,7 +260,7 @@ var int42gt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int32, pgtypes.Int16}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int32.Compare(val1.(int32), int32(val2.(int16))) + res, err := pgtypes.Int32.Compare(ctx, val1.(int32), int32(val2.(int16))) return res == 1, err }, } @@ -272,7 +272,7 @@ var int4gt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int32, pgtypes.Int32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int32.Compare(val1.(int32), val2.(int32)) + res, err := pgtypes.Int32.Compare(ctx, val1.(int32), val2.(int32)) return res == 1, err }, } @@ -284,7 +284,7 @@ var int48gt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int32, pgtypes.Int64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(int64(val1.(int32)), val2.(int64)) + res, err := pgtypes.Int64.Compare(ctx, int64(val1.(int32)), val2.(int64)) return res == 1, err }, } @@ -296,7 +296,7 @@ var int82gt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int64, pgtypes.Int16}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(val1.(int64), int64(val2.(int16))) + res, err := pgtypes.Int64.Compare(ctx, val1.(int64), int64(val2.(int16))) return res == 1, err }, } @@ -308,7 +308,7 @@ var int84gt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int64, pgtypes.Int32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(val1.(int64), int64(val2.(int32))) + res, err := pgtypes.Int64.Compare(ctx, val1.(int64), int64(val2.(int32))) return res == 1, err }, } @@ -320,7 +320,7 @@ var int8gt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int64, pgtypes.Int64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(val1.(int64), val2.(int64)) + res, err := pgtypes.Int64.Compare(ctx, val1.(int64), val2.(int64)) return res == 1, err }, } @@ -332,7 +332,7 @@ var interval_gt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Interval, pgtypes.Interval}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Interval.Compare(val1.(duration.Duration), val2.(duration.Duration)) + res, err := pgtypes.Interval.Compare(ctx, val1.(duration.Duration), val2.(duration.Duration)) return res == 1, err }, } @@ -344,7 +344,7 @@ var jsonb_gt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.JsonB, pgtypes.JsonB}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.JsonB.Compare(val1.(pgtypes.JsonDocument), val2.(pgtypes.JsonDocument)) + res, err := pgtypes.JsonB.Compare(ctx, val1.(pgtypes.JsonDocument), val2.(pgtypes.JsonDocument)) return res == 1, err }, } @@ -356,7 +356,7 @@ var namegt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Name, pgtypes.Name}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Name.Compare(val1.(string), val2.(string)) + res, err := pgtypes.Name.Compare(ctx, val1.(string), val2.(string)) return res == 1, err }, } @@ -368,7 +368,7 @@ var namegttext = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Name, pgtypes.Text}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Text.Compare(val1.(string), val2.(string)) + res, err := pgtypes.Text.Compare(ctx, val1.(string), val2.(string)) return res == 1, err }, } @@ -380,7 +380,7 @@ var numeric_gt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Numeric, pgtypes.Numeric}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Numeric.Compare(val1.(decimal.Decimal), val2.(decimal.Decimal)) + res, err := pgtypes.Numeric.Compare(ctx, val1.(decimal.Decimal), val2.(decimal.Decimal)) return res == 1, err }, } @@ -404,7 +404,7 @@ var textgtname = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Text, pgtypes.Name}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Text.Compare(val1.(string), val2.(string)) + res, err := pgtypes.Text.Compare(ctx, val1.(string), val2.(string)) return res == 1, err }, } @@ -416,7 +416,7 @@ var text_gt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Text, pgtypes.Text}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Text.Compare(val1.(string), val2.(string)) + res, err := pgtypes.Text.Compare(ctx, val1.(string), val2.(string)) return res == 1, err }, } @@ -428,7 +428,7 @@ var time_gt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Time, pgtypes.Time}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Time.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.Time.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res == 1, err }, } @@ -452,7 +452,7 @@ var timestamp_gt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Timestamp, pgtypes.Timestamp}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Timestamp.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.Timestamp.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res == 1, err }, } @@ -464,7 +464,7 @@ var timestamp_gt_timestamptz = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Timestamp, pgtypes.TimestampTZ}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.TimestampTZ.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.TimestampTZ.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res == 1, err }, } @@ -488,7 +488,7 @@ var timestamptz_gt_timestamp = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.TimestampTZ, pgtypes.Timestamp}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.TimestampTZ.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.TimestampTZ.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res == 1, err }, } @@ -500,7 +500,7 @@ var timestamptz_gt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.TimestampTZ, pgtypes.TimestampTZ}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.TimestampTZ.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.TimestampTZ.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res == 1, err }, } @@ -512,7 +512,7 @@ var timetz_gt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.TimeTZ, pgtypes.TimeTZ}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.TimeTZ.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.TimeTZ.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res == 1, err }, } @@ -524,7 +524,7 @@ var uuid_gt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Uuid, pgtypes.Uuid}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Uuid.Compare(val1.(uuid.UUID), val2.(uuid.UUID)) + res, err := pgtypes.Uuid.Compare(ctx, val1.(uuid.UUID), val2.(uuid.UUID)) return res == 1, err }, } diff --git a/server/functions/binary/greater_equal.go b/server/functions/binary/greater_equal.go index 19b4a81e35..8c648cb29d 100644 --- a/server/functions/binary/greater_equal.go +++ b/server/functions/binary/greater_equal.go @@ -80,7 +80,7 @@ var boolge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Bool, pgtypes.Bool}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Bool.Compare(val1.(bool), val2.(bool)) + res, err := pgtypes.Bool.Compare(ctx, val1.(bool), val2.(bool)) return res >= 0, err }, } @@ -92,7 +92,7 @@ var bpcharge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.BpChar, pgtypes.BpChar}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.BpChar.Compare(val1.(string), val2.(string)) + res, err := pgtypes.BpChar.Compare(ctx, val1.(string), val2.(string)) return res >= 0, err }, } @@ -104,7 +104,7 @@ var byteage = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Bytea, pgtypes.Bytea}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Bytea.Compare(val1.([]byte), val2.([]byte)) + res, err := pgtypes.Bytea.Compare(ctx, val1.([]byte), val2.([]byte)) return res >= 0, err }, } @@ -116,7 +116,7 @@ var charge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.InternalChar, pgtypes.InternalChar}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.InternalChar.Compare(val1.(string), val2.(string)) + res, err := pgtypes.InternalChar.Compare(ctx, val1.(string), val2.(string)) return res >= 0, err }, } @@ -128,7 +128,7 @@ var date_ge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Date, pgtypes.Date}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Date.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.Date.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res >= 0, err }, } @@ -164,7 +164,7 @@ var enum_ge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.AnyEnum, pgtypes.AnyEnum}, Strict: true, Callable: func(ctx *sql.Context, t [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := t[0].Compare(val1, val2) + res, err := t[0].Compare(ctx, val1, val2) return res >= 0, err }, } @@ -176,7 +176,7 @@ var float4ge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Float32, pgtypes.Float32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Float32.Compare(val1.(float32), val2.(float32)) + res, err := pgtypes.Float32.Compare(ctx, val1.(float32), val2.(float32)) return res >= 0, err }, } @@ -188,7 +188,7 @@ var float48ge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Float32, pgtypes.Float64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Float64.Compare(float64(val1.(float32)), val2.(float64)) + res, err := pgtypes.Float64.Compare(ctx, float64(val1.(float32)), val2.(float64)) return res >= 0, err }, } @@ -200,7 +200,7 @@ var float84ge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Float64, pgtypes.Float32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Float64.Compare(val1.(float64), float64(val2.(float32))) + res, err := pgtypes.Float64.Compare(ctx, val1.(float64), float64(val2.(float32))) return res >= 0, err }, } @@ -212,7 +212,7 @@ var float8ge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Float64, pgtypes.Float64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Float64.Compare(val1.(float64), val2.(float64)) + res, err := pgtypes.Float64.Compare(ctx, val1.(float64), val2.(float64)) return res >= 0, err }, } @@ -224,7 +224,7 @@ var int2ge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int16, pgtypes.Int16}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int16.Compare(val1.(int16), val2.(int16)) + res, err := pgtypes.Int16.Compare(ctx, val1.(int16), val2.(int16)) return res >= 0, err }, } @@ -236,7 +236,7 @@ var int24ge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int16, pgtypes.Int32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int32.Compare(int32(val1.(int16)), val2.(int32)) + res, err := pgtypes.Int32.Compare(ctx, int32(val1.(int16)), val2.(int32)) return res >= 0, err }, } @@ -248,7 +248,7 @@ var int28ge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int16, pgtypes.Int64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(int64(val1.(int16)), val2.(int64)) + res, err := pgtypes.Int64.Compare(ctx, int64(val1.(int16)), val2.(int64)) return res >= 0, err }, } @@ -260,7 +260,7 @@ var int42ge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int32, pgtypes.Int16}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int32.Compare(val1.(int32), int32(val2.(int16))) + res, err := pgtypes.Int32.Compare(ctx, val1.(int32), int32(val2.(int16))) return res >= 0, err }, } @@ -272,7 +272,7 @@ var int4ge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int32, pgtypes.Int32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int32.Compare(val1.(int32), val2.(int32)) + res, err := pgtypes.Int32.Compare(ctx, val1.(int32), val2.(int32)) return res >= 0, err }, } @@ -284,7 +284,7 @@ var int48ge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int32, pgtypes.Int64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(int64(val1.(int32)), val2.(int64)) + res, err := pgtypes.Int64.Compare(ctx, int64(val1.(int32)), val2.(int64)) return res >= 0, err }, } @@ -296,7 +296,7 @@ var int82ge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int64, pgtypes.Int16}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(val1.(int64), int64(val2.(int16))) + res, err := pgtypes.Int64.Compare(ctx, val1.(int64), int64(val2.(int16))) return res >= 0, err }, } @@ -308,7 +308,7 @@ var int84ge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int64, pgtypes.Int32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(val1.(int64), int64(val2.(int32))) + res, err := pgtypes.Int64.Compare(ctx, val1.(int64), int64(val2.(int32))) return res >= 0, err }, } @@ -320,7 +320,7 @@ var int8ge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int64, pgtypes.Int64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(val1.(int64), val2.(int64)) + res, err := pgtypes.Int64.Compare(ctx, val1.(int64), val2.(int64)) return res >= 0, err }, } @@ -332,7 +332,7 @@ var interval_ge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Interval, pgtypes.Interval}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Interval.Compare(val1.(duration.Duration), val2.(duration.Duration)) + res, err := pgtypes.Interval.Compare(ctx, val1.(duration.Duration), val2.(duration.Duration)) return res >= 0, err }, } @@ -344,7 +344,7 @@ var jsonb_ge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.JsonB, pgtypes.JsonB}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.JsonB.Compare(val1.(pgtypes.JsonDocument), val2.(pgtypes.JsonDocument)) + res, err := pgtypes.JsonB.Compare(ctx, val1.(pgtypes.JsonDocument), val2.(pgtypes.JsonDocument)) return res >= 0, err }, } @@ -356,7 +356,7 @@ var namege = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Name, pgtypes.Name}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Name.Compare(val1.(string), val2.(string)) + res, err := pgtypes.Name.Compare(ctx, val1.(string), val2.(string)) return res >= 0, err }, } @@ -368,7 +368,7 @@ var namegetext = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Name, pgtypes.Text}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Text.Compare(val1.(string), val2.(string)) + res, err := pgtypes.Text.Compare(ctx, val1.(string), val2.(string)) return res >= 0, err }, } @@ -380,7 +380,7 @@ var numeric_ge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Numeric, pgtypes.Numeric}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Numeric.Compare(val1.(decimal.Decimal), val2.(decimal.Decimal)) + res, err := pgtypes.Numeric.Compare(ctx, val1.(decimal.Decimal), val2.(decimal.Decimal)) return res >= 0, err }, } @@ -404,7 +404,7 @@ var textgename = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Text, pgtypes.Name}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Text.Compare(val1.(string), val2.(string)) + res, err := pgtypes.Text.Compare(ctx, val1.(string), val2.(string)) return res >= 0, err }, } @@ -416,7 +416,7 @@ var text_ge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Text, pgtypes.Text}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Text.Compare(val1.(string), val2.(string)) + res, err := pgtypes.Text.Compare(ctx, val1.(string), val2.(string)) return res >= 0, err }, } @@ -428,7 +428,7 @@ var time_ge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Time, pgtypes.Time}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Time.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.Time.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res >= 0, err }, } @@ -452,7 +452,7 @@ var timestamp_ge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Timestamp, pgtypes.Timestamp}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Timestamp.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.Timestamp.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res >= 0, err }, } @@ -464,7 +464,7 @@ var timestamp_ge_timestamptz = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Timestamp, pgtypes.TimestampTZ}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.TimestampTZ.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.TimestampTZ.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res >= 0, err }, } @@ -488,7 +488,7 @@ var timestamptz_ge_timestamp = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.TimestampTZ, pgtypes.Timestamp}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.TimestampTZ.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.TimestampTZ.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res >= 0, err }, } @@ -500,7 +500,7 @@ var timestamptz_ge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.TimestampTZ, pgtypes.TimestampTZ}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.TimestampTZ.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.TimestampTZ.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res >= 0, err }, } @@ -512,7 +512,7 @@ var timetz_ge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.TimeTZ, pgtypes.TimeTZ}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.TimeTZ.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.TimeTZ.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res >= 0, err }, } @@ -524,7 +524,7 @@ var uuid_ge = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Uuid, pgtypes.Uuid}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Uuid.Compare(val1.(uuid.UUID), val2.(uuid.UUID)) + res, err := pgtypes.Uuid.Compare(ctx, val1.(uuid.UUID), val2.(uuid.UUID)) return res >= 0, err }, } diff --git a/server/functions/binary/less.go b/server/functions/binary/less.go index a342063f4f..fcde7e8974 100644 --- a/server/functions/binary/less.go +++ b/server/functions/binary/less.go @@ -80,7 +80,7 @@ var boollt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Bool, pgtypes.Bool}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Bool.Compare(val1.(bool), val2.(bool)) + res, err := pgtypes.Bool.Compare(ctx, val1.(bool), val2.(bool)) return res == -1, err }, } @@ -92,7 +92,7 @@ var bpcharlt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.BpChar, pgtypes.BpChar}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.BpChar.Compare(val1.(string), val2.(string)) + res, err := pgtypes.BpChar.Compare(ctx, val1.(string), val2.(string)) return res == -1, err }, } @@ -104,7 +104,7 @@ var bytealt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Bytea, pgtypes.Bytea}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Bytea.Compare(val1.([]byte), val2.([]byte)) + res, err := pgtypes.Bytea.Compare(ctx, val1.([]byte), val2.([]byte)) return res == -1, err }, } @@ -116,7 +116,7 @@ var charlt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.InternalChar, pgtypes.InternalChar}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.InternalChar.Compare(val1.(string), val2.(string)) + res, err := pgtypes.InternalChar.Compare(ctx, val1.(string), val2.(string)) return res == -1, err }, } @@ -128,7 +128,7 @@ var date_lt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Date, pgtypes.Date}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Date.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.Date.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res == -1, err }, } @@ -164,7 +164,7 @@ var enum_lt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.AnyEnum, pgtypes.AnyEnum}, Strict: true, Callable: func(ctx *sql.Context, t [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := t[0].Compare(val1, val2) + res, err := t[0].Compare(ctx, val1, val2) return res == -1, err }, } @@ -176,7 +176,7 @@ var float4lt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Float32, pgtypes.Float32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Float32.Compare(val1.(float32), val2.(float32)) + res, err := pgtypes.Float32.Compare(ctx, val1.(float32), val2.(float32)) return res == -1, err }, } @@ -188,7 +188,7 @@ var float48lt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Float32, pgtypes.Float64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Float64.Compare(float64(val1.(float32)), val2.(float64)) + res, err := pgtypes.Float64.Compare(ctx, float64(val1.(float32)), val2.(float64)) return res == -1, err }, } @@ -200,7 +200,7 @@ var float84lt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Float64, pgtypes.Float32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Float64.Compare(val1.(float64), float64(val2.(float32))) + res, err := pgtypes.Float64.Compare(ctx, val1.(float64), float64(val2.(float32))) return res == -1, err }, } @@ -212,7 +212,7 @@ var float8lt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Float64, pgtypes.Float64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Float64.Compare(val1.(float64), val2.(float64)) + res, err := pgtypes.Float64.Compare(ctx, val1.(float64), val2.(float64)) return res == -1, err }, } @@ -224,7 +224,7 @@ var int2lt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int16, pgtypes.Int16}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int16.Compare(val1.(int16), val2.(int16)) + res, err := pgtypes.Int16.Compare(ctx, val1.(int16), val2.(int16)) return res == -1, err }, } @@ -236,7 +236,7 @@ var int24lt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int16, pgtypes.Int32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int32.Compare(int32(val1.(int16)), val2.(int32)) + res, err := pgtypes.Int32.Compare(ctx, int32(val1.(int16)), val2.(int32)) return res == -1, err }, } @@ -248,7 +248,7 @@ var int28lt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int16, pgtypes.Int64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(int64(val1.(int16)), val2.(int64)) + res, err := pgtypes.Int64.Compare(ctx, int64(val1.(int16)), val2.(int64)) return res == -1, err }, } @@ -260,7 +260,7 @@ var int42lt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int32, pgtypes.Int16}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int32.Compare(val1.(int32), int32(val2.(int16))) + res, err := pgtypes.Int32.Compare(ctx, val1.(int32), int32(val2.(int16))) return res == -1, err }, } @@ -272,7 +272,7 @@ var int4lt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int32, pgtypes.Int32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int32.Compare(val1.(int32), val2.(int32)) + res, err := pgtypes.Int32.Compare(ctx, val1.(int32), val2.(int32)) return res == -1, err }, } @@ -284,7 +284,7 @@ var int48lt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int32, pgtypes.Int64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(int64(val1.(int32)), val2.(int64)) + res, err := pgtypes.Int64.Compare(ctx, int64(val1.(int32)), val2.(int64)) return res == -1, err }, } @@ -296,7 +296,7 @@ var int82lt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int64, pgtypes.Int16}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(val1.(int64), int64(val2.(int16))) + res, err := pgtypes.Int64.Compare(ctx, val1.(int64), int64(val2.(int16))) return res == -1, err }, } @@ -308,7 +308,7 @@ var int84lt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int64, pgtypes.Int32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(val1.(int64), int64(val2.(int32))) + res, err := pgtypes.Int64.Compare(ctx, val1.(int64), int64(val2.(int32))) return res == -1, err }, } @@ -320,7 +320,7 @@ var int8lt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int64, pgtypes.Int64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(val1.(int64), val2.(int64)) + res, err := pgtypes.Int64.Compare(ctx, val1.(int64), val2.(int64)) return res == -1, err }, } @@ -332,7 +332,7 @@ var interval_lt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Interval, pgtypes.Interval}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Interval.Compare(val1.(duration.Duration), val2.(duration.Duration)) + res, err := pgtypes.Interval.Compare(ctx, val1.(duration.Duration), val2.(duration.Duration)) return res == -1, err }, } @@ -344,7 +344,7 @@ var jsonb_lt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.JsonB, pgtypes.JsonB}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.JsonB.Compare(val1.(pgtypes.JsonDocument), val2.(pgtypes.JsonDocument)) + res, err := pgtypes.JsonB.Compare(ctx, val1.(pgtypes.JsonDocument), val2.(pgtypes.JsonDocument)) return res == -1, err }, } @@ -356,7 +356,7 @@ var namelt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Name, pgtypes.Name}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Name.Compare(val1.(string), val2.(string)) + res, err := pgtypes.Name.Compare(ctx, val1.(string), val2.(string)) return res == -1, err }, } @@ -368,7 +368,7 @@ var namelttext = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Name, pgtypes.Text}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Text.Compare(val1.(string), val2.(string)) + res, err := pgtypes.Text.Compare(ctx, val1.(string), val2.(string)) return res == -1, err }, } @@ -380,7 +380,7 @@ var numeric_lt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Numeric, pgtypes.Numeric}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Numeric.Compare(val1.(decimal.Decimal), val2.(decimal.Decimal)) + res, err := pgtypes.Numeric.Compare(ctx, val1.(decimal.Decimal), val2.(decimal.Decimal)) return res == -1, err }, } @@ -404,7 +404,7 @@ var textltname = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Text, pgtypes.Name}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Text.Compare(val1.(string), val2.(string)) + res, err := pgtypes.Text.Compare(ctx, val1.(string), val2.(string)) return res == -1, err }, } @@ -416,7 +416,7 @@ var text_lt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Text, pgtypes.Text}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Text.Compare(val1.(string), val2.(string)) + res, err := pgtypes.Text.Compare(ctx, val1.(string), val2.(string)) return res == -1, err }, } @@ -428,7 +428,7 @@ var time_lt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Time, pgtypes.Time}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Time.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.Time.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res == -1, err }, } @@ -452,7 +452,7 @@ var timestamp_lt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Timestamp, pgtypes.Timestamp}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Timestamp.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.Timestamp.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res == -1, err }, } @@ -464,7 +464,7 @@ var timestamp_lt_timestamptz = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Timestamp, pgtypes.TimestampTZ}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.TimestampTZ.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.TimestampTZ.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res == -1, err }, } @@ -488,7 +488,7 @@ var timestamptz_lt_timestamp = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.TimestampTZ, pgtypes.Timestamp}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.TimestampTZ.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.TimestampTZ.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res == -1, err }, } @@ -500,7 +500,7 @@ var timestamptz_lt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.TimestampTZ, pgtypes.TimestampTZ}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.TimestampTZ.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.TimestampTZ.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res == -1, err }, } @@ -512,7 +512,7 @@ var timetz_lt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.TimeTZ, pgtypes.TimeTZ}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.TimeTZ.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.TimeTZ.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res == -1, err }, } @@ -524,7 +524,7 @@ var uuid_lt = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Uuid, pgtypes.Uuid}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Uuid.Compare(val1.(uuid.UUID), val2.(uuid.UUID)) + res, err := pgtypes.Uuid.Compare(ctx, val1.(uuid.UUID), val2.(uuid.UUID)) return res == -1, err }, } diff --git a/server/functions/binary/less_equal.go b/server/functions/binary/less_equal.go index e6599fc519..c3e8e2e674 100644 --- a/server/functions/binary/less_equal.go +++ b/server/functions/binary/less_equal.go @@ -80,7 +80,7 @@ var boolle = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Bool, pgtypes.Bool}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Bool.Compare(val1.(bool), val2.(bool)) + res, err := pgtypes.Bool.Compare(ctx, val1.(bool), val2.(bool)) return res <= 0, err }, } @@ -92,7 +92,7 @@ var bpcharle = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.BpChar, pgtypes.BpChar}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.BpChar.Compare(val1.(string), val2.(string)) + res, err := pgtypes.BpChar.Compare(ctx, val1.(string), val2.(string)) return res <= 0, err }, } @@ -104,7 +104,7 @@ var byteale = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Bytea, pgtypes.Bytea}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Bytea.Compare(val1.([]byte), val2.([]byte)) + res, err := pgtypes.Bytea.Compare(ctx, val1.([]byte), val2.([]byte)) return res <= 0, err }, } @@ -116,7 +116,7 @@ var charle = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.InternalChar, pgtypes.InternalChar}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.InternalChar.Compare(val1.(string), val2.(string)) + res, err := pgtypes.InternalChar.Compare(ctx, val1.(string), val2.(string)) return res <= 0, err }, } @@ -128,7 +128,7 @@ var date_le = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Date, pgtypes.Date}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Date.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.Date.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res <= 0, err }, } @@ -164,7 +164,7 @@ var enum_le = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.AnyEnum, pgtypes.AnyEnum}, Strict: true, Callable: func(ctx *sql.Context, t [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := t[0].Compare(val1, val2) + res, err := t[0].Compare(ctx, val1, val2) return res <= 0, err }, } @@ -176,7 +176,7 @@ var float4le = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Float32, pgtypes.Float32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Float32.Compare(val1.(float32), val2.(float32)) + res, err := pgtypes.Float32.Compare(ctx, val1.(float32), val2.(float32)) return res <= 0, err }, } @@ -188,7 +188,7 @@ var float48le = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Float32, pgtypes.Float64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Float64.Compare(float64(val1.(float32)), val2.(float64)) + res, err := pgtypes.Float64.Compare(ctx, float64(val1.(float32)), val2.(float64)) return res <= 0, err }, } @@ -200,7 +200,7 @@ var float84le = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Float64, pgtypes.Float32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Float64.Compare(val1.(float64), float64(val2.(float32))) + res, err := pgtypes.Float64.Compare(ctx, val1.(float64), float64(val2.(float32))) return res <= 0, err }, } @@ -212,7 +212,7 @@ var float8le = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Float64, pgtypes.Float64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Float64.Compare(val1.(float64), val2.(float64)) + res, err := pgtypes.Float64.Compare(ctx, val1.(float64), val2.(float64)) return res <= 0, err }, } @@ -224,7 +224,7 @@ var int2le = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int16, pgtypes.Int16}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int16.Compare(val1.(int16), val2.(int16)) + res, err := pgtypes.Int16.Compare(ctx, val1.(int16), val2.(int16)) return res <= 0, err }, } @@ -236,7 +236,7 @@ var int24le = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int16, pgtypes.Int32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int32.Compare(int32(val1.(int16)), val2.(int32)) + res, err := pgtypes.Int32.Compare(ctx, int32(val1.(int16)), val2.(int32)) return res <= 0, err }, } @@ -248,7 +248,7 @@ var int28le = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int16, pgtypes.Int64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(int64(val1.(int16)), val2.(int64)) + res, err := pgtypes.Int64.Compare(ctx, int64(val1.(int16)), val2.(int64)) return res <= 0, err }, } @@ -260,7 +260,7 @@ var int42le = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int32, pgtypes.Int16}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int32.Compare(val1.(int32), int32(val2.(int16))) + res, err := pgtypes.Int32.Compare(ctx, val1.(int32), int32(val2.(int16))) return res <= 0, err }, } @@ -272,7 +272,7 @@ var int4le = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int32, pgtypes.Int32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int32.Compare(val1.(int32), val2.(int32)) + res, err := pgtypes.Int32.Compare(ctx, val1.(int32), val2.(int32)) return res <= 0, err }, } @@ -284,7 +284,7 @@ var int48le = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int32, pgtypes.Int64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(int64(val1.(int32)), val2.(int64)) + res, err := pgtypes.Int64.Compare(ctx, int64(val1.(int32)), val2.(int64)) return res <= 0, err }, } @@ -296,7 +296,7 @@ var int82le = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int64, pgtypes.Int16}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(val1.(int64), int64(val2.(int16))) + res, err := pgtypes.Int64.Compare(ctx, val1.(int64), int64(val2.(int16))) return res <= 0, err }, } @@ -308,7 +308,7 @@ var int84le = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int64, pgtypes.Int32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(val1.(int64), int64(val2.(int32))) + res, err := pgtypes.Int64.Compare(ctx, val1.(int64), int64(val2.(int32))) return res <= 0, err }, } @@ -320,7 +320,7 @@ var int8le = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int64, pgtypes.Int64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(val1.(int64), val2.(int64)) + res, err := pgtypes.Int64.Compare(ctx, val1.(int64), val2.(int64)) return res <= 0, err }, } @@ -332,7 +332,7 @@ var interval_le = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Interval, pgtypes.Interval}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Interval.Compare(val1.(duration.Duration), val2.(duration.Duration)) + res, err := pgtypes.Interval.Compare(ctx, val1.(duration.Duration), val2.(duration.Duration)) return res <= 0, err }, } @@ -344,7 +344,7 @@ var jsonb_le = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.JsonB, pgtypes.JsonB}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.JsonB.Compare(val1.(pgtypes.JsonDocument), val2.(pgtypes.JsonDocument)) + res, err := pgtypes.JsonB.Compare(ctx, val1.(pgtypes.JsonDocument), val2.(pgtypes.JsonDocument)) return res <= 0, err }, } @@ -356,7 +356,7 @@ var namele = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Name, pgtypes.Name}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Name.Compare(val1.(string), val2.(string)) + res, err := pgtypes.Name.Compare(ctx, val1.(string), val2.(string)) return res <= 0, err }, } @@ -368,7 +368,7 @@ var nameletext = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Name, pgtypes.Text}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Text.Compare(val1.(string), val2.(string)) + res, err := pgtypes.Text.Compare(ctx, val1.(string), val2.(string)) return res <= 0, err }, } @@ -380,7 +380,7 @@ var numeric_le = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Numeric, pgtypes.Numeric}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Numeric.Compare(val1.(decimal.Decimal), val2.(decimal.Decimal)) + res, err := pgtypes.Numeric.Compare(ctx, val1.(decimal.Decimal), val2.(decimal.Decimal)) return res <= 0, err }, } @@ -404,7 +404,7 @@ var textlename = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Text, pgtypes.Name}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Text.Compare(val1.(string), val2.(string)) + res, err := pgtypes.Text.Compare(ctx, val1.(string), val2.(string)) return res <= 0, err }, } @@ -416,7 +416,7 @@ var text_le = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Text, pgtypes.Text}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Text.Compare(val1.(string), val2.(string)) + res, err := pgtypes.Text.Compare(ctx, val1.(string), val2.(string)) return res <= 0, err }, } @@ -428,7 +428,7 @@ var time_le = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Time, pgtypes.Time}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Time.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.Time.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res <= 0, err }, } @@ -452,7 +452,7 @@ var timestamp_le = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Timestamp, pgtypes.Timestamp}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Timestamp.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.Timestamp.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res <= 0, err }, } @@ -464,7 +464,7 @@ var timestamp_le_timestamptz = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Timestamp, pgtypes.TimestampTZ}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.TimestampTZ.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.TimestampTZ.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res <= 0, err }, } @@ -488,7 +488,7 @@ var timestamptz_le_timestamp = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.TimestampTZ, pgtypes.Timestamp}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.TimestampTZ.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.TimestampTZ.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res <= 0, err }, } @@ -500,7 +500,7 @@ var timestamptz_le = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.TimestampTZ, pgtypes.TimestampTZ}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.TimestampTZ.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.TimestampTZ.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res <= 0, err }, } @@ -512,7 +512,7 @@ var timetz_le = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.TimeTZ, pgtypes.TimeTZ}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.TimeTZ.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.TimeTZ.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res <= 0, err }, } @@ -524,7 +524,7 @@ var uuid_le = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Uuid, pgtypes.Uuid}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Uuid.Compare(val1.(uuid.UUID), val2.(uuid.UUID)) + res, err := pgtypes.Uuid.Compare(ctx, val1.(uuid.UUID), val2.(uuid.UUID)) return res <= 0, err }, } diff --git a/server/functions/binary/not_equal.go b/server/functions/binary/not_equal.go index de717c0158..1425d68879 100644 --- a/server/functions/binary/not_equal.go +++ b/server/functions/binary/not_equal.go @@ -81,7 +81,7 @@ var boolne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Bool, pgtypes.Bool}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Bool.Compare(val1.(bool), val2.(bool)) + res, err := pgtypes.Bool.Compare(ctx, val1.(bool), val2.(bool)) return res != 0, err }, } @@ -93,7 +93,7 @@ var bpcharne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.BpChar, pgtypes.BpChar}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.BpChar.Compare(val1.(string), val2.(string)) + res, err := pgtypes.BpChar.Compare(ctx, val1.(string), val2.(string)) return res != 0, err }, } @@ -105,7 +105,7 @@ var byteane = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Bytea, pgtypes.Bytea}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Bytea.Compare(val1.([]byte), val2.([]byte)) + res, err := pgtypes.Bytea.Compare(ctx, val1.([]byte), val2.([]byte)) return res != 0, err }, } @@ -117,7 +117,7 @@ var charne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.InternalChar, pgtypes.InternalChar}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.InternalChar.Compare(val1.(string), val2.(string)) + res, err := pgtypes.InternalChar.Compare(ctx, val1.(string), val2.(string)) return res != 0, err }, } @@ -129,7 +129,7 @@ var date_ne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Date, pgtypes.Date}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Date.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.Date.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res != 0, err }, } @@ -165,7 +165,7 @@ var enum_ne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.AnyEnum, pgtypes.AnyEnum}, Strict: true, Callable: func(ctx *sql.Context, t [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := t[0].Compare(val1, val2) + res, err := t[0].Compare(ctx, val1, val2) return res != 0, err }, } @@ -177,7 +177,7 @@ var float4ne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Float32, pgtypes.Float32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Float32.Compare(val1.(float32), val2.(float32)) + res, err := pgtypes.Float32.Compare(ctx, val1.(float32), val2.(float32)) return res != 0, err }, } @@ -189,7 +189,7 @@ var float48ne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Float32, pgtypes.Float64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Float64.Compare(float64(val1.(float32)), val2.(float64)) + res, err := pgtypes.Float64.Compare(ctx, float64(val1.(float32)), val2.(float64)) return res != 0, err }, } @@ -201,7 +201,7 @@ var float84ne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Float64, pgtypes.Float32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Float64.Compare(val1.(float64), float64(val2.(float32))) + res, err := pgtypes.Float64.Compare(ctx, val1.(float64), float64(val2.(float32))) return res != 0, err }, } @@ -213,7 +213,7 @@ var float8ne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Float64, pgtypes.Float64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Float64.Compare(val1.(float64), val2.(float64)) + res, err := pgtypes.Float64.Compare(ctx, val1.(float64), val2.(float64)) return res != 0, err }, } @@ -225,7 +225,7 @@ var int2ne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int16, pgtypes.Int16}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int16.Compare(val1.(int16), val2.(int16)) + res, err := pgtypes.Int16.Compare(ctx, val1.(int16), val2.(int16)) return res != 0, err }, } @@ -237,7 +237,7 @@ var int24ne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int16, pgtypes.Int32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int32.Compare(int32(val1.(int16)), val2.(int32)) + res, err := pgtypes.Int32.Compare(ctx, int32(val1.(int16)), val2.(int32)) return res != 0, err }, } @@ -249,7 +249,7 @@ var int28ne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int16, pgtypes.Int64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(int64(val1.(int16)), val2.(int64)) + res, err := pgtypes.Int64.Compare(ctx, int64(val1.(int16)), val2.(int64)) return res != 0, err }, } @@ -261,7 +261,7 @@ var int42ne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int32, pgtypes.Int16}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int32.Compare(val1.(int32), int32(val2.(int16))) + res, err := pgtypes.Int32.Compare(ctx, val1.(int32), int32(val2.(int16))) return res != 0, err }, } @@ -273,7 +273,7 @@ var int4ne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int32, pgtypes.Int32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int32.Compare(val1.(int32), val2.(int32)) + res, err := pgtypes.Int32.Compare(ctx, val1.(int32), val2.(int32)) return res != 0, err }, } @@ -285,7 +285,7 @@ var int48ne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int32, pgtypes.Int64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(int64(val1.(int32)), val2.(int64)) + res, err := pgtypes.Int64.Compare(ctx, int64(val1.(int32)), val2.(int64)) return res != 0, err }, } @@ -297,7 +297,7 @@ var int82ne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int64, pgtypes.Int16}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(val1.(int64), int64(val2.(int16))) + res, err := pgtypes.Int64.Compare(ctx, val1.(int64), int64(val2.(int16))) return res != 0, err }, } @@ -309,7 +309,7 @@ var int84ne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int64, pgtypes.Int32}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(val1.(int64), int64(val2.(int32))) + res, err := pgtypes.Int64.Compare(ctx, val1.(int64), int64(val2.(int32))) return res != 0, err }, } @@ -321,7 +321,7 @@ var int8ne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Int64, pgtypes.Int64}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Int64.Compare(val1.(int64), val2.(int64)) + res, err := pgtypes.Int64.Compare(ctx, val1.(int64), val2.(int64)) return res != 0, err }, } @@ -333,7 +333,7 @@ var interval_ne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Interval, pgtypes.Interval}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Interval.Compare(val1.(duration.Duration), val2.(duration.Duration)) + res, err := pgtypes.Interval.Compare(ctx, val1.(duration.Duration), val2.(duration.Duration)) return res != 0, err }, } @@ -345,7 +345,7 @@ var jsonb_ne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.JsonB, pgtypes.JsonB}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.JsonB.Compare(val1.(pgtypes.JsonDocument), val2.(pgtypes.JsonDocument)) + res, err := pgtypes.JsonB.Compare(ctx, val1.(pgtypes.JsonDocument), val2.(pgtypes.JsonDocument)) return res != 0, err }, } @@ -357,7 +357,7 @@ var namene = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Name, pgtypes.Name}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Name.Compare(val1.(string), val2.(string)) + res, err := pgtypes.Name.Compare(ctx, val1.(string), val2.(string)) return res != 0, err }, } @@ -369,7 +369,7 @@ var namenetext = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Name, pgtypes.Text}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Text.Compare(val1.(string), val2.(string)) + res, err := pgtypes.Text.Compare(ctx, val1.(string), val2.(string)) return res != 0, err }, } @@ -381,7 +381,7 @@ var numeric_ne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Numeric, pgtypes.Numeric}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Numeric.Compare(val1.(decimal.Decimal), val2.(decimal.Decimal)) + res, err := pgtypes.Numeric.Compare(ctx, val1.(decimal.Decimal), val2.(decimal.Decimal)) return res != 0, err }, } @@ -393,7 +393,7 @@ var oidne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Oid, pgtypes.Oid}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Oid.Compare(val1.(id.Id), val2.(id.Id)) + res, err := pgtypes.Oid.Compare(ctx, val1.(id.Id), val2.(id.Id)) return res != 0, err }, } @@ -405,7 +405,7 @@ var textnename = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Text, pgtypes.Name}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Text.Compare(val1.(string), val2.(string)) + res, err := pgtypes.Text.Compare(ctx, val1.(string), val2.(string)) return res != 0, err }, } @@ -417,7 +417,7 @@ var text_ne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Text, pgtypes.Text}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Text.Compare(val1.(string), val2.(string)) + res, err := pgtypes.Text.Compare(ctx, val1.(string), val2.(string)) return res != 0, err }, } @@ -429,7 +429,7 @@ var time_ne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Time, pgtypes.Time}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Time.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.Time.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res != 0, err }, } @@ -453,7 +453,7 @@ var timestamp_ne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Timestamp, pgtypes.Timestamp}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Timestamp.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.Timestamp.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res != 0, err }, } @@ -465,7 +465,7 @@ var timestamp_ne_timestamptz = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Timestamp, pgtypes.TimestampTZ}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.TimestampTZ.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.TimestampTZ.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res != 0, err }, } @@ -489,7 +489,7 @@ var timestamptz_ne_timestamp = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.TimestampTZ, pgtypes.Timestamp}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.TimestampTZ.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.TimestampTZ.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res != 0, err }, } @@ -501,7 +501,7 @@ var timestamptz_ne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.TimestampTZ, pgtypes.TimestampTZ}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.TimestampTZ.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.TimestampTZ.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res != 0, err }, } @@ -513,7 +513,7 @@ var timetz_ne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.TimeTZ, pgtypes.TimeTZ}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.TimeTZ.Compare(val1.(time.Time), val2.(time.Time)) + res, err := pgtypes.TimeTZ.Compare(ctx, val1.(time.Time), val2.(time.Time)) return res != 0, err }, } @@ -525,7 +525,7 @@ var uuid_ne = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Uuid, pgtypes.Uuid}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Uuid.Compare(val1.(uuid.UUID), val2.(uuid.UUID)) + res, err := pgtypes.Uuid.Compare(ctx, val1.(uuid.UUID), val2.(uuid.UUID)) return res != 0, err }, } @@ -538,7 +538,7 @@ var xidneqint4 = framework.Function2{ Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { // TODO: investigate the edge cases - res, err := pgtypes.Int64.Compare(int64(val1.(uint32)), int64(val2.(int32))) + res, err := pgtypes.Int64.Compare(ctx, int64(val1.(uint32)), int64(val2.(int32))) return res != 0, err }, } @@ -550,7 +550,7 @@ var xidneq = framework.Function2{ Parameters: [2]*pgtypes.DoltgresType{pgtypes.Xid, pgtypes.Xid}, Strict: true, Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, val1 any, val2 any) (any, error) { - res, err := pgtypes.Xid.Compare(val1.(uint32), val2.(uint32)) + res, err := pgtypes.Xid.Compare(ctx, val1.(uint32), val2.(uint32)) return res != 0, err }, } diff --git a/server/functions/dolt_procedures.go b/server/functions/dolt_procedures.go index bbe34ce091..d6712dfbf3 100644 --- a/server/functions/dolt_procedures.go +++ b/server/functions/dolt_procedures.go @@ -74,7 +74,7 @@ func callableForDoltProcedure(p *plan.ExternalProcedure, funcVal reflect.Value) } // Grab the passed-in variable and convert it to the type we expect - exprParamVal, _, err := paramDefinition.Type.Convert(values[i]) + exprParamVal, _, err := paramDefinition.Type.Convert(ctx, values[i]) if err != nil { return nil, err } diff --git a/server/functions/framework/compiled_function.go b/server/functions/framework/compiled_function.go index 53b6e77931..dfd1cc4238 100644 --- a/server/functions/framework/compiled_function.go +++ b/server/functions/framework/compiled_function.go @@ -255,7 +255,7 @@ func (c *CompiledFunction) Eval(ctx *sql.Context, row sql.Row) (interface{}, err if err != nil { return nil, err } - args[i], _, _ = dt.Convert(args[i]) + args[i], _, _ = dt.Convert(ctx, args[i]) } if args[i] == nil && isStrict { return nil, nil diff --git a/server/types/type.go b/server/types/type.go index fd1868d548..b2df74635e 100644 --- a/server/types/type.go +++ b/server/types/type.go @@ -154,9 +154,7 @@ func (t *DoltgresType) CollationCoercibility(ctx *sql.Context) (collation sql.Co } // Compare implements the types.ExtendedType interface. -func (t *DoltgresType) Compare(v1 interface{}, v2 interface{}) (int, error) { - // TODO: Add context parameter to Type::Compare - ctx := context.Background() +func (t *DoltgresType) Compare(ctx context.Context, v1 interface{}, v2 interface{}) (int, error) { var err error v1, err = sql.UnwrapAny(ctx, v1) if err != nil { @@ -288,7 +286,7 @@ func (t *DoltgresType) Compare(v1 interface{}, v2 interface{}) (int, error) { bb := v2.([]any) minLength := utils.Min(len(ab), len(bb)) for i := 0; i < minLength; i++ { - res, err := t.ArrayBaseType().Compare(ab[i], bb[i]) + res, err := t.ArrayBaseType().Compare(ctx, ab[i], bb[i]) if err != nil { return 0, err } @@ -309,7 +307,7 @@ func (t *DoltgresType) Compare(v1 interface{}, v2 interface{}) (int, error) { } // Convert implements the types.ExtendedType interface. -func (t *DoltgresType) Convert(v interface{}) (interface{}, sql.ConvertInRange, error) { +func (t *DoltgresType) Convert(ctx context.Context, v interface{}) (interface{}, sql.ConvertInRange, error) { if v == nil { return nil, sql.InRange, nil } From 8d8473306bbac14d1a254c44d442b13ee51f7fdd Mon Sep 17 00:00:00 2001 From: nick Date: Tue, 1 Apr 2025 18:47:37 -0700 Subject: [PATCH 22/27] Format files --- server/functions/text.go | 4 ++-- testing/go/adaptive_encoding_test.go | 3 ++- testing/go/enginetest/doltgres_engine_test.go | 5 ----- testing/go/enginetest/doltgres_harness_test.go | 11 ++++++----- 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/server/functions/text.go b/server/functions/text.go index 8a0a01740c..3bf8096839 100644 --- a/server/functions/text.go +++ b/server/functions/text.go @@ -16,12 +16,12 @@ package functions import ( "fmt" - "github.com/dolthub/go-mysql-server/sql" - "github.com/dolthub/doltgresql/utils" + "github.com/dolthub/go-mysql-server/sql" "github.com/dolthub/doltgresql/server/functions/framework" pgtypes "github.com/dolthub/doltgresql/server/types" + "github.com/dolthub/doltgresql/utils" ) // initText registers the functions to the catalog. diff --git a/testing/go/adaptive_encoding_test.go b/testing/go/adaptive_encoding_test.go index 532cf07428..aa440e43de 100644 --- a/testing/go/adaptive_encoding_test.go +++ b/testing/go/adaptive_encoding_test.go @@ -16,9 +16,10 @@ package _go import ( "fmt" - "github.com/dolthub/go-mysql-server/enginetest/scriptgen/setup" "testing" + "github.com/dolthub/go-mysql-server/enginetest/scriptgen/setup" + "github.com/dolthub/go-mysql-server/sql" ) diff --git a/testing/go/enginetest/doltgres_engine_test.go b/testing/go/enginetest/doltgres_engine_test.go index 3e82f09b82..f087628160 100755 --- a/testing/go/enginetest/doltgres_engine_test.go +++ b/testing/go/enginetest/doltgres_engine_test.go @@ -1972,11 +1972,6 @@ func TestStatsAutoRefreshConcurrency(t *testing.T) { t.Skip("port test from Dolt") } -func TestAdaptiveBigBlobs(t *testing.T) { - h := newDoltgresServerHarness(t) - denginetest.RunAdaptiveBigBlobsTest(t, h) -} - func skipPreparedTests(t *testing.T) { if skipPrepared { t.Skip("skip prepared") diff --git a/testing/go/enginetest/doltgres_harness_test.go b/testing/go/enginetest/doltgres_harness_test.go index 76cfb435e2..e45f1d36a5 100644 --- a/testing/go/enginetest/doltgres_harness_test.go +++ b/testing/go/enginetest/doltgres_harness_test.go @@ -18,7 +18,6 @@ import ( "context" gosql "database/sql" "fmt" - "github.com/dolthub/go-mysql-server/enginetest/queries" "io" "regexp" "runtime" @@ -32,6 +31,7 @@ import ( "github.com/dolthub/dolt/go/libraries/utils/svcs" gms "github.com/dolthub/go-mysql-server" "github.com/dolthub/go-mysql-server/enginetest" + "github.com/dolthub/go-mysql-server/enginetest/queries" "github.com/dolthub/go-mysql-server/enginetest/scriptgen/setup" "github.com/dolthub/go-mysql-server/sql" "github.com/dolthub/go-mysql-server/sql/analyzer" @@ -435,6 +435,7 @@ func convertCountStarDoltLog(t *testing.T, q string, expected []sql.Row, rows [] } func widenExpectedRows(t *testing.T, q string, expected []sql.Row, sch sql.Schema, actual []sql.Row, isNilOrEmptySchema bool) { + ctx := context.Background() for i, row := range expected { for j := range sch { field := row[j] @@ -458,7 +459,7 @@ func widenExpectedRows(t *testing.T, q string, expected []sql.Row, sch sql.Schem continue } - convertedExpected, _, err := sch[j].Type.Convert(expected[i][j]) + convertedExpected, _, err := sch[j].Type.Convert(ctx, expected[i][j]) require.NoError(t, err) expected[i][j] = convertedExpected } @@ -673,7 +674,7 @@ func (d *DoltgresQueryEngine) Query(ctx *sql.Context, query string) (sql.Schema, results := make([]sql.Row, 0) for rows.Next() { rows.Scan(columns...) - row, err := toRow(schema, columns) + row, err := toRow(ctx, schema, columns) if err != nil { return nil, nil, nil, err } @@ -747,7 +748,7 @@ func (d *DoltgresQueryEngine) getConnection() (*pgx.Conn, error) { return d.conn, nil } -func toRow(schema sql.Schema, r []interface{}) (sql.Row, error) { +func toRow(ctx *sql.Context, schema sql.Schema, r []interface{}) (sql.Row, error) { row := make(sql.Row, len(schema)) for i, col := range schema { val, err := unwrapResultColumn(r[i]) @@ -755,7 +756,7 @@ func toRow(schema sql.Schema, r []interface{}) (sql.Row, error) { return nil, err } - row[i], _, err = col.Type.Convert(val) + row[i], _, err = col.Type.Convert(ctx, val) if err != nil { return nil, err } From b0be56085b33d19607384a48efac22ceeb40f437 Mon Sep 17 00:00:00 2001 From: nick Date: Wed, 2 Apr 2025 14:13:15 -0700 Subject: [PATCH 23/27] Bump Dolt --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 9adcbf19ca..7e1435d456 100644 --- a/go.mod +++ b/go.mod @@ -6,11 +6,11 @@ require ( github.com/PuerkitoBio/goquery v1.8.1 github.com/cockroachdb/apd/v2 v2.0.3-0.20200518165714-d020e156310a github.com/cockroachdb/errors v1.7.5 - github.com/dolthub/dolt/go v0.40.5-0.20250401200315-e1c0525a600d + github.com/dolthub/dolt/go v0.40.5-0.20250402210955-f0022a02cb0d github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 github.com/dolthub/go-icu-regex v0.0.0-20250327004329-6799764f2dad - github.com/dolthub/go-mysql-server v0.19.1-0.20250401195558-87e8cfa1b6ed + github.com/dolthub/go-mysql-server v0.19.1-0.20250402210546-e5862b5f0278 github.com/dolthub/sqllogictest/go v0.0.0-20240618184124-ca47f9354216 github.com/dolthub/vitess v0.0.0-20250325024605-8131be3ca6d3 github.com/fatih/color v1.13.0 diff --git a/go.sum b/go.sum index b88693e6f0..347bf65ca1 100644 --- a/go.sum +++ b/go.sum @@ -256,8 +256,8 @@ github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5Xh github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dolthub/aws-sdk-go-ini-parser v0.0.0-20250305001723-2821c37f6c12 h1:IdqX7J8vi/Kn3T3Ee0VzqnLqwFmgA2hr8WZETPcQjfM= github.com/dolthub/aws-sdk-go-ini-parser v0.0.0-20250305001723-2821c37f6c12/go.mod h1:rN7X8BHwkjPcfMQQ2QTAq/xM3leUSGLfb+1Js7Y6TVo= -github.com/dolthub/dolt/go v0.40.5-0.20250401200315-e1c0525a600d h1:tSnCqdR+s4D4nTCPYeY5VlHrDMEMdUhpoXnoqt0wQCA= -github.com/dolthub/dolt/go v0.40.5-0.20250401200315-e1c0525a600d/go.mod h1:KLGJEn7SEMg8oL5Asr/IQvphDem6xILaOI59dndv9bs= +github.com/dolthub/dolt/go v0.40.5-0.20250402210955-f0022a02cb0d h1:ceghjcNKnpnJBvW7evoJlmyBUcWBtOjci7QEOhos0bY= +github.com/dolthub/dolt/go v0.40.5-0.20250402210955-f0022a02cb0d/go.mod h1:vEedx6xMu2G+390KRGAYwuFVZoyeIjZuYL9v8jTS9YE= github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d h1:gO9+wrmNHXukPNCO1tpfCcXIdMlW/qppbUStfLvqz/U= github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d/go.mod h1:L5RDYZbC9BBWmoU2+TjTekeqqhFXX5EqH9ln00O0stY= github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 h1:u3PMzfF8RkKd3lB9pZ2bfn0qEG+1Gms9599cr0REMww= @@ -266,8 +266,8 @@ github.com/dolthub/fslock v0.0.3 h1:iLMpUIvJKMKm92+N1fmHVdxJP5NdyDK5bK7z7Ba2s2U= github.com/dolthub/fslock v0.0.3/go.mod h1:QWql+P17oAAMLnL4HGB5tiovtDuAjdDTPbuqx7bYfa0= github.com/dolthub/go-icu-regex v0.0.0-20250327004329-6799764f2dad h1:66ZPawHszNu37VPQckdhX1BPPVzREsGgNxQeefnlm3g= github.com/dolthub/go-icu-regex v0.0.0-20250327004329-6799764f2dad/go.mod h1:ylU4XjUpsMcvl/BKeRRMXSH7e7WBrPXdSLvnRJYrxEA= -github.com/dolthub/go-mysql-server v0.19.1-0.20250401195558-87e8cfa1b6ed h1:9qqVWN4M6v1Ktdrs5Xs7O3YwFZklXb5YkZ3JyduVaco= -github.com/dolthub/go-mysql-server v0.19.1-0.20250401195558-87e8cfa1b6ed/go.mod h1:lt1xwT52nowkmcVWaFpLShNUrScQV8EQ1aNNGGMduRE= +github.com/dolthub/go-mysql-server v0.19.1-0.20250402210546-e5862b5f0278 h1:0bOz9ELMrZvU7nCYLtkCzB9aPkP1xyw/7rwcBDfyqkg= +github.com/dolthub/go-mysql-server v0.19.1-0.20250402210546-e5862b5f0278/go.mod h1:lt1xwT52nowkmcVWaFpLShNUrScQV8EQ1aNNGGMduRE= github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63 h1:OAsXLAPL4du6tfbBgK0xXHZkOlos63RdKYS3Sgw/dfI= github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63/go.mod h1:lV7lUeuDhH5thVGDCKXbatwKy2KW80L4rMT46n+Y2/Q= github.com/dolthub/ishell v0.0.0-20240701202509-2b217167d718 h1:lT7hE5k+0nkBdj/1UOSFwjWpNxf+LCApbRHgnCA17XE= From b361cd8f410468196eb8bdd88afe187559e11089 Mon Sep 17 00:00:00 2001 From: nick Date: Wed, 2 Apr 2025 14:37:27 -0700 Subject: [PATCH 24/27] Guard read to function registry map with mutex. --- server/types/function_registry.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/types/function_registry.go b/server/types/function_registry.go index 8e53087ce3..1bd4fc4a49 100644 --- a/server/types/function_registry.go +++ b/server/types/function_registry.go @@ -76,6 +76,8 @@ func (r *functionRegistry) InternalToRegistryID(functionID id.Function) uint32 { // GetFunction returns the associated function for the given ID. This will always return a valid function. func (r *functionRegistry) GetFunction(id uint32) QuickFunction { + r.mutex.Lock() + defer r.mutex.Unlock() f := r.functions[id] if f != nil { return f @@ -83,8 +85,6 @@ func (r *functionRegistry) GetFunction(id uint32) QuickFunction { if id == 0 { return nil } - r.mutex.Lock() - defer r.mutex.Unlock() f = r.loadFunction(id) if f == nil { // If we hit this panic, then we're missing a test that uses this function (and we should add that test) From 67c3743a812a448987b7bf5c6c3c8ea213f28eda Mon Sep 17 00:00:00 2001 From: nick Date: Mon, 7 Apr 2025 13:38:33 -0700 Subject: [PATCH 25/27] Bump Dolt dependencies. --- go.mod | 4 ++-- go.sum | 8 ++++---- server/server.go | 4 +++- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 7e1435d456..4d8c550644 100644 --- a/go.mod +++ b/go.mod @@ -6,11 +6,11 @@ require ( github.com/PuerkitoBio/goquery v1.8.1 github.com/cockroachdb/apd/v2 v2.0.3-0.20200518165714-d020e156310a github.com/cockroachdb/errors v1.7.5 - github.com/dolthub/dolt/go v0.40.5-0.20250402210955-f0022a02cb0d + github.com/dolthub/dolt/go v0.40.5-0.20250408190740-4f8c0213a10e github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 github.com/dolthub/go-icu-regex v0.0.0-20250327004329-6799764f2dad - github.com/dolthub/go-mysql-server v0.19.1-0.20250402210546-e5862b5f0278 + github.com/dolthub/go-mysql-server v0.19.1-0.20250408170948-a69741ddc1cf github.com/dolthub/sqllogictest/go v0.0.0-20240618184124-ca47f9354216 github.com/dolthub/vitess v0.0.0-20250325024605-8131be3ca6d3 github.com/fatih/color v1.13.0 diff --git a/go.sum b/go.sum index 347bf65ca1..57dded54dc 100644 --- a/go.sum +++ b/go.sum @@ -256,8 +256,8 @@ github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5Xh github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dolthub/aws-sdk-go-ini-parser v0.0.0-20250305001723-2821c37f6c12 h1:IdqX7J8vi/Kn3T3Ee0VzqnLqwFmgA2hr8WZETPcQjfM= github.com/dolthub/aws-sdk-go-ini-parser v0.0.0-20250305001723-2821c37f6c12/go.mod h1:rN7X8BHwkjPcfMQQ2QTAq/xM3leUSGLfb+1Js7Y6TVo= -github.com/dolthub/dolt/go v0.40.5-0.20250402210955-f0022a02cb0d h1:ceghjcNKnpnJBvW7evoJlmyBUcWBtOjci7QEOhos0bY= -github.com/dolthub/dolt/go v0.40.5-0.20250402210955-f0022a02cb0d/go.mod h1:vEedx6xMu2G+390KRGAYwuFVZoyeIjZuYL9v8jTS9YE= +github.com/dolthub/dolt/go v0.40.5-0.20250408190740-4f8c0213a10e h1:CFbIOx8n40WblkVnmB/+UciGr9nzS0mPUiMbR4oc090= +github.com/dolthub/dolt/go v0.40.5-0.20250408190740-4f8c0213a10e/go.mod h1:TRBraWNhLh1xYzcdLxsP6LyNzX2fO6WGyPrOUIkluBA= github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d h1:gO9+wrmNHXukPNCO1tpfCcXIdMlW/qppbUStfLvqz/U= github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d/go.mod h1:L5RDYZbC9BBWmoU2+TjTekeqqhFXX5EqH9ln00O0stY= github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 h1:u3PMzfF8RkKd3lB9pZ2bfn0qEG+1Gms9599cr0REMww= @@ -266,8 +266,8 @@ github.com/dolthub/fslock v0.0.3 h1:iLMpUIvJKMKm92+N1fmHVdxJP5NdyDK5bK7z7Ba2s2U= github.com/dolthub/fslock v0.0.3/go.mod h1:QWql+P17oAAMLnL4HGB5tiovtDuAjdDTPbuqx7bYfa0= github.com/dolthub/go-icu-regex v0.0.0-20250327004329-6799764f2dad h1:66ZPawHszNu37VPQckdhX1BPPVzREsGgNxQeefnlm3g= github.com/dolthub/go-icu-regex v0.0.0-20250327004329-6799764f2dad/go.mod h1:ylU4XjUpsMcvl/BKeRRMXSH7e7WBrPXdSLvnRJYrxEA= -github.com/dolthub/go-mysql-server v0.19.1-0.20250402210546-e5862b5f0278 h1:0bOz9ELMrZvU7nCYLtkCzB9aPkP1xyw/7rwcBDfyqkg= -github.com/dolthub/go-mysql-server v0.19.1-0.20250402210546-e5862b5f0278/go.mod h1:lt1xwT52nowkmcVWaFpLShNUrScQV8EQ1aNNGGMduRE= +github.com/dolthub/go-mysql-server v0.19.1-0.20250408170948-a69741ddc1cf h1:sk9D4mAFaWDb6laaXmP9lD7L1rJnywgic/xEGxWtCfU= +github.com/dolthub/go-mysql-server v0.19.1-0.20250408170948-a69741ddc1cf/go.mod h1:lt1xwT52nowkmcVWaFpLShNUrScQV8EQ1aNNGGMduRE= github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63 h1:OAsXLAPL4du6tfbBgK0xXHZkOlos63RdKYS3Sgw/dfI= github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63/go.mod h1:lV7lUeuDhH5thVGDCKXbatwKy2KW80L4rMT46n+Y2/Q= github.com/dolthub/ishell v0.0.0-20240701202509-2b217167d718 h1:lT7hE5k+0nkBdj/1UOSFwjWpNxf+LCApbRHgnCA17XE= diff --git a/server/server.go b/server/server.go index 25b150ed4b..b75046c6f6 100644 --- a/server/server.go +++ b/server/server.go @@ -101,7 +101,9 @@ func runServer(ctx context.Context, cfg *servercfg.DoltgresConfig, dEnv *env.Dol } ssCfg := cfg.ToSqlServerConfig() - err = doltservercfg.ApplySystemVariables(ssCfg, sql.SystemVariables) + // The sql context can't be passed in because doesn't exist yet. + // But since it's only needed to read from the db and the db doesn't exist yet either, this is safe. + err = doltservercfg.ApplySystemVariables(nil, ssCfg, sql.SystemVariables) if err != nil { return nil, err } From 27ea981bdfa98cffec9fdba5f7ec3761831c84e0 Mon Sep 17 00:00:00 2001 From: nick Date: Tue, 8 Apr 2025 12:10:47 -0700 Subject: [PATCH 26/27] Replace string casts with sql.Unwrap where necessary. --- server/functions/length.go | 10 ++++++++- server/functions/substr.go | 43 +++++++++++++++++++++++++++++++------- server/types/type.go | 6 +++++- 3 files changed, 50 insertions(+), 9 deletions(-) diff --git a/server/functions/length.go b/server/functions/length.go index bd47ae0186..65799eacbe 100644 --- a/server/functions/length.go +++ b/server/functions/length.go @@ -15,6 +15,7 @@ package functions import ( + "fmt" "github.com/dolthub/go-mysql-server/sql" "github.com/dolthub/doltgresql/server/functions/framework" @@ -33,6 +34,13 @@ var length_text = framework.Function1{ Parameters: [1]*pgtypes.DoltgresType{pgtypes.Text}, Strict: true, Callable: func(ctx *sql.Context, _ [2]*pgtypes.DoltgresType, val1 any) (any, error) { - return int32(len([]rune(val1.(string)))), nil + val1str, ok, err := sql.Unwrap[string](ctx, val1) + if err != nil { + return nil, err + } + if !ok { + return nil, fmt.Errorf("unexpected type for length input, expected string, got %T", val1) + } + return int32(len([]rune(val1str))), nil }, } diff --git a/server/functions/substr.go b/server/functions/substr.go index ef7dea5ee9..0ef1bc0d39 100644 --- a/server/functions/substr.go +++ b/server/functions/substr.go @@ -15,6 +15,7 @@ package functions import ( + "fmt" "regexp" "github.com/cockroachdb/errors" @@ -52,8 +53,15 @@ var substring_text_int32 = framework.Function2{ } // substring_text_int32_fn is a helper function for substr_text_int32 and substring_text_int32. -func substring_text_int32_fn(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, str any, start any) (any, error) { - runes := []rune(str.(string)) +func substring_text_int32_fn(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, input any, start any) (any, error) { + str, ok, err := sql.Unwrap[string](ctx, input) + if err != nil { + return nil, err + } + if !ok { + return nil, fmt.Errorf("unexpected type for substring input, expected string, got %T", str) + } + runes := []rune(str) if start.(int32) < 1 { start = int32(1) } @@ -84,10 +92,17 @@ var substring_text_int32_int32 = framework.Function3{ } // substring_text_int32_int32_fn is a helper function for substr_text_int32_int32. -func substring_text_int32_int32_fn(ctx *sql.Context, _ [4]*pgtypes.DoltgresType, str any, startInt any, countInt any) (any, error) { +func substring_text_int32_int32_fn(ctx *sql.Context, _ [4]*pgtypes.DoltgresType, input any, startInt any, countInt any) (any, error) { + str, ok, err := sql.Unwrap[string](ctx, input) + if err != nil { + return nil, err + } + if !ok { + return nil, fmt.Errorf("unexpected type for substring input, expected string, got %T", str) + } start := startInt.(int32) count := countInt.(int32) - runes := []rune(str.(string)) + runes := []rune(str) if count < 0 { return nil, errors.Errorf("negative substring length not allowed") } @@ -115,13 +130,27 @@ var substring_text_text = framework.Function2{ Return: pgtypes.Text, Parameters: [2]*pgtypes.DoltgresType{pgtypes.Text, pgtypes.Text}, Strict: true, - Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, str any, pattern any) (any, error) { - re, err := regexp.Compile(pattern.(string)) + Callable: func(ctx *sql.Context, _ [3]*pgtypes.DoltgresType, input any, pattern any) (any, error) { + str, ok, err := sql.Unwrap[string](ctx, input) + if err != nil { + return nil, err + } + if !ok { + return nil, fmt.Errorf("unexpected type for substring input, expected string, got %T", str) + } + patternStr, ok, err := sql.Unwrap[string](ctx, pattern) + if err != nil { + return nil, err + } + if !ok { + return nil, fmt.Errorf("unexpected type for substring pattern, expected string, got %T", str) + } + re, err := regexp.Compile(patternStr) if err != nil { return nil, err } - match := re.Find([]byte(str.(string))) + match := re.Find([]byte(str)) if match == nil { return nil, nil diff --git a/server/types/type.go b/server/types/type.go index e06cf25bc9..05f6e86ed9 100644 --- a/server/types/type.go +++ b/server/types/type.go @@ -321,7 +321,11 @@ func (t *DoltgresType) Convert(ctx context.Context, v interface{}) (interface{}, return v, sql.InRange, nil } case "bpchar", "char", "json", "name", "text", "unknown", "varchar": - if _, ok := v.(string); ok { + _, ok, err := sql.Unwrap[string](ctx, v) + if err != nil { + return nil, sql.OutOfRange, err + } + if ok { return v, sql.InRange, nil } case "date", "time", "timestamp", "timestamptz", "timetz": From bf512ac029de86b03745bac4544513c2064f856f Mon Sep 17 00:00:00 2001 From: nick Date: Tue, 8 Apr 2025 12:29:06 -0700 Subject: [PATCH 27/27] Run ./scripts/format_repo.sh --- server/functions/length.go | 1 + 1 file changed, 1 insertion(+) diff --git a/server/functions/length.go b/server/functions/length.go index 65799eacbe..f182345144 100644 --- a/server/functions/length.go +++ b/server/functions/length.go @@ -16,6 +16,7 @@ package functions import ( "fmt" + "github.com/dolthub/go-mysql-server/sql" "github.com/dolthub/doltgresql/server/functions/framework"