diff --git a/go/go.mod b/go/go.mod index e29d00bcc3..e796c44b7b 100644 --- a/go/go.mod +++ b/go/go.mod @@ -61,7 +61,7 @@ require ( github.com/dolthub/dolt-mcp v0.2.2-0.20250917171427-13e4520d1c36 github.com/dolthub/eventsapi_schema v0.0.0-20250915094920-eadfd39051ca github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 - github.com/dolthub/go-mysql-server v0.20.1-0.20251006192807-f7a3e3850abc + github.com/dolthub/go-mysql-server v0.20.1-0.20251007221930-37976af33334 github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63 github.com/edsrzf/mmap-go v1.2.0 github.com/esote/minmaxheap v1.0.0 diff --git a/go/go.sum b/go/go.sum index 9684e6f6bb..66af37117b 100644 --- a/go/go.sum +++ b/go/go.sum @@ -213,8 +213,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-20250916051405-78a38d478790 h1:zxMsH7RLiG+dlZ/y0LgJHTV26XoiSJcuWq+em6t6VVc= github.com/dolthub/go-icu-regex v0.0.0-20250916051405-78a38d478790/go.mod h1:F3cnm+vMRK1HaU6+rNqQrOCyR03HHhR1GWG2gnPOqaE= -github.com/dolthub/go-mysql-server v0.20.1-0.20251006192807-f7a3e3850abc h1:kEbuDqqQ++5R/ExeKcNcQEe7MKYSn2ZJE2lBxoYQqjw= -github.com/dolthub/go-mysql-server v0.20.1-0.20251006192807-f7a3e3850abc/go.mod h1:EeYR0apo+8j2Dyxmn2ghkPlirO2S5mT1xHBrA+Efys8= +github.com/dolthub/go-mysql-server v0.20.1-0.20251007221930-37976af33334 h1:BBV5PxSA5wW2gDzCDnfhM1TbH2xqy2151I4sKVoVB0c= +github.com/dolthub/go-mysql-server v0.20.1-0.20251007221930-37976af33334/go.mod h1:EeYR0apo+8j2Dyxmn2ghkPlirO2S5mT1xHBrA+Efys8= 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/go/store/prolly/tree/json_indexed_document.go b/go/store/prolly/tree/json_indexed_document.go index 7a83e23a77..49e08c4291 100644 --- a/go/store/prolly/tree/json_indexed_document.go +++ b/go/store/prolly/tree/json_indexed_document.go @@ -46,6 +46,7 @@ type IndexedJsonDocument struct { var _ types.JSONBytes = IndexedJsonDocument{} var _ types.MutableJSON = IndexedJsonDocument{} +var _ types.ComparableJSON = IndexedJsonDocument{} var _ fmt.Stringer = IndexedJsonDocument{} var _ driver.Valuer = IndexedJsonDocument{} @@ -744,3 +745,26 @@ func (i IndexedJsonDocument) Compare(ctx context.Context, other interface{}) (in return types.CompareJSON(ctx, val, other) } } + +func (i IndexedJsonDocument) JsonType(ctx context.Context) (string, error) { + typeCategory, err := i.getTypeCategory(ctx) + if err != nil { + return "", err + } + switch typeCategory { + case jsonTypeObject: + return "OBJECT", nil + case jsonTypeArray: + return "ARRAY", nil + case jsonTypeNull: + return "NULL", nil + case jsonTypeBoolean: + return "BOOLEAN", nil + case jsonTypeString: + return "STRING", nil + case jsonTypeNumber: + return "DOUBLE", nil + default: + return "", fmt.Errorf("unknown json type category %v", typeCategory) + } +} diff --git a/go/store/prolly/tree/json_indexed_document_test.go b/go/store/prolly/tree/json_indexed_document_test.go index 0a33868a30..98b2ad1bc9 100644 --- a/go/store/prolly/tree/json_indexed_document_test.go +++ b/go/store/prolly/tree/json_indexed_document_test.go @@ -358,6 +358,12 @@ func TestJsonCompare(t *testing.T) { largeObject := newIndexedJsonDocumentFromValue(t, ctx, ns, largeObjectWrapper) require.NoError(t, err) largeDocTests := []typetests.JsonCompareTest{ + { + Name: "identical large objects are equal", + Left: largeObject, + Right: largeObject, + Cmp: 0, + }, { Name: "large object < boolean", Left: largeObject,