Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ require (
github.com/dolthub/eventsapi_schema v0.0.0-20250725194025-a087efa1ee55
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.20.1-0.20250807172251-c76b4ab0b9c8
github.com/dolthub/go-mysql-server v0.20.1-0.20250808203856-b2556a731d9b
github.com/dolthub/sqllogictest/go v0.0.0-20240618184124-ca47f9354216
github.com/dolthub/vitess v0.0.0-20250730174048-497aebb8cea7
github.com/fatih/color v1.13.0
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,8 @@ github.com/dolthub/go-icu-regex v0.0.0-20250327004329-6799764f2dad h1:66ZPawHszN
github.com/dolthub/go-icu-regex v0.0.0-20250327004329-6799764f2dad/go.mod h1:ylU4XjUpsMcvl/BKeRRMXSH7e7WBrPXdSLvnRJYrxEA=
github.com/dolthub/go-mysql-server v0.20.1-0.20250807172251-c76b4ab0b9c8 h1:MRwXXSGmTxG2nNQzWeFs4AOevCpn6fTVdrDX5+1rZhM=
github.com/dolthub/go-mysql-server v0.20.1-0.20250807172251-c76b4ab0b9c8/go.mod h1:D/E/y9q6i4mryN12JhvaKlFZnSSWD1X1tx+CFsUcgp8=
github.com/dolthub/go-mysql-server v0.20.1-0.20250808203856-b2556a731d9b h1:tpo0kv/l8grlUujwUnZ00fL9RX3SdcWJWrqbh7LL7o4=
github.com/dolthub/go-mysql-server v0.20.1-0.20250808203856-b2556a731d9b/go.mod h1:D/E/y9q6i4mryN12JhvaKlFZnSSWD1X1tx+CFsUcgp8=
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=
Expand Down
50 changes: 49 additions & 1 deletion testing/go/enginetest/query_converter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1120,7 +1120,31 @@ func convertTypeDef(columnType sqlparser.ColumnType) tree.ResolvableTypeReferenc
case "set":
panic(fmt.Sprintf("unhandled type: %s", columnType.Type))
case "bit":
panic(fmt.Sprintf("unhandled type: %s", columnType.Type))
// Support for MySQL BIT type conversion (dolt#9641)
// See: https://github.com/dolthub/dolt/issues/9641
// Map BIT types to appropriately sized integers for MySQL compatibility
width := int32FromSqlVal(columnType.Length)

var intOid oid.Oid
var intWidth int32
if width <= 16 {
intOid = oid.T_int2
intWidth = 16
} else if width <= 32 {
intOid = oid.T_int4
intWidth = 32
} else {
intOid = oid.T_int8
intWidth = 64
}

return &types.T{
InternalType: types.InternalType{
Family: types.IntFamily,
Width: intWidth,
Oid: intOid,
},
}
case "json":
return &types.T{
InternalType: types.InternalType{
Expand Down Expand Up @@ -1568,3 +1592,27 @@ func TestBoolValSupport(t *testing.T) {
require.Contains(t, result[0], "CREATE TABLE", "Result should contain CREATE TABLE")
require.Contains(t, result[0], "false", "Result should contain converted boolean literal")
}

// TestBitTypeSupport tests BIT type conversion for dolt#9641 compatibility
// See: https://github.com/dolthub/dolt/issues/9641
func TestBitTypeSupport(t *testing.T) {
result := convertQuery("CREATE TABLE bit_union_test_9641 (id INT PRIMARY KEY, flag BIT(1))")
require.NotEmpty(t, result)
require.Len(t, result, 1)
require.Contains(t, result[0], "CREATE TABLE")
require.Contains(t, result[0], "SMALLINT")

bitResult := convertQuery("CREATE TABLE bit_test (id INT PRIMARY KEY, data BIT(8))")
require.NotEmpty(t, bitResult)
require.Contains(t, bitResult[0], "CREATE TABLE")

insertResult := convertQuery("INSERT INTO bit_union_test_9641 VALUES (1, 0), (2, 1)")
require.NotEmpty(t, insertResult)
require.Len(t, insertResult, 1)
require.Contains(t, insertResult[0], "INSERT INTO")

unionResult := convertQuery("SELECT flag FROM bit_union_test_9641 WHERE id = 1 UNION SELECT NULL as flag")
require.NotEmpty(t, unionResult)
require.Len(t, unionResult, 1)
require.Contains(t, unionResult[0], "UNION")
}
Loading