diff --git a/go.mod b/go.mod index 88040b7ebb..4e5f258053 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( 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.20.1-0.20250707155350-de1be10bcc53 + github.com/dolthub/go-mysql-server v0.20.1-0.20250709235949-a4a269779e72 github.com/dolthub/sqllogictest/go v0.0.0-20240618184124-ca47f9354216 github.com/dolthub/vitess v0.0.0-20250611225316-90a5898bfe26 github.com/fatih/color v1.13.0 @@ -184,3 +184,5 @@ require ( ) replace github.com/pganalyze/pg_query_go/v6 => github.com/dolthub/pg_query_go/v6 v6.0.0-20250702135351-29eb6bfc4ea6 + +replace github.com/dolthub/go-mysql-server => github.com/dolthub/go-mysql-server v0.20.1-0.20250709235949-a4a269779e72 diff --git a/go.sum b/go.sum index fd67d3e3a8..9ece2f167f 100644 --- a/go.sum +++ b/go.sum @@ -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.20.1-0.20250707155350-de1be10bcc53 h1:VtqXQv3zqO4GNKYLUad1ldIxTMJsIQefEwRmxrwK4Zo= -github.com/dolthub/go-mysql-server v0.20.1-0.20250707155350-de1be10bcc53/go.mod h1:zuYoQ3keJHAvWUWMLzbP9anvR32b3sy1Fm8wB8ukNxQ= +github.com/dolthub/go-mysql-server v0.20.1-0.20250709235949-a4a269779e72 h1:Azrgysbs6KFsM4QrDHCmM+eZbZIUwP2bYNVGWSl32y8= +github.com/dolthub/go-mysql-server v0.20.1-0.20250709235949-a4a269779e72/go.mod h1:zuYoQ3keJHAvWUWMLzbP9anvR32b3sy1Fm8wB8ukNxQ= 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/testing/bats/dataloading/csv-load-basic-cases.sql b/testing/bats/dataloading/csv-load-basic-cases.sql index ca24318d7a..895be3969c 100644 --- a/testing/bats/dataloading/csv-load-basic-cases.sql +++ b/testing/bats/dataloading/csv-load-basic-cases.sql @@ -2,7 +2,7 @@ BEGIN; CREATE TABLE tbl1 (pk int primary key, c1 varchar(100), c2 varchar(250)); -COPY tbl1 FROM STDIN (FORMAT CSV); +COPY tbl1 (pk, c1, c2) FROM STDIN (FORMAT CSV); 1,green, 2,"blue","a q diff --git a/testing/bats/dataloading/csv-load-multi-chunk.sql b/testing/bats/dataloading/csv-load-multi-chunk.sql index 1e18f5b1fa..30cab44d5b 100644 --- a/testing/bats/dataloading/csv-load-multi-chunk.sql +++ b/testing/bats/dataloading/csv-load-multi-chunk.sql @@ -2,7 +2,7 @@ BEGIN; CREATE TABLE tbl1 (pk int primary key, c1 varchar(100), c2 varchar(250)); -COPY tbl1 FROM STDIN (FORMAT CSV); +COPY tbl1 (pk, c1, c2) FROM STDIN (FORMAT CSV); 0,foo,barbazbashbarbazbashbarbazbashbarbazbash 1,foo,barbazbashbarbazbashbarbazbashbarbazbashbarbazbash 2,foo,barbazbashbarbazbashbarbazbash diff --git a/testing/bats/dataloading/csv-load-with-header.sql b/testing/bats/dataloading/csv-load-with-header.sql index a20de9098a..54e874e488 100644 --- a/testing/bats/dataloading/csv-load-with-header.sql +++ b/testing/bats/dataloading/csv-load-with-header.sql @@ -2,7 +2,7 @@ BEGIN; CREATE TABLE tbl1 (pk int primary key, c1 varchar(100), c2 varchar(250)); -COPY tbl1 FROM STDIN (FORMAT CSV, HEADER TRUE); +COPY tbl1 (pk, c1, c2) FROM STDIN (FORMAT CSV, HEADER TRUE); pk,c1,c2 1,green, 2,"blue","a diff --git a/testing/bats/dataloading/csv-load-with-legacy-syntax.sql b/testing/bats/dataloading/csv-load-with-legacy-syntax.sql index d6cc852a8f..fa0245aa7e 100644 --- a/testing/bats/dataloading/csv-load-with-legacy-syntax.sql +++ b/testing/bats/dataloading/csv-load-with-legacy-syntax.sql @@ -3,7 +3,7 @@ BEGIN; CREATE TABLE tbl1 (pk int primary key, c1 varchar(100), c2 varchar(250)); -- NOTE: This is legacy syntax, but still in use and still supported by PostgreSQL -COPY tbl1 FROM STDIN CSV, HEADER; +COPY tbl1 (pk, c1, c2) FROM STDIN CSV, HEADER; pk,c1,c2 1,green, 2,"blue","a diff --git a/testing/bats/dataloading/csv-load-with-no-tx-control.sql b/testing/bats/dataloading/csv-load-with-no-tx-control.sql index 35591d2f30..38fbf18592 100644 --- a/testing/bats/dataloading/csv-load-with-no-tx-control.sql +++ b/testing/bats/dataloading/csv-load-with-no-tx-control.sql @@ -3,7 +3,7 @@ INSERT INTO test VALUES (0), (1); CREATE TABLE test_info (id int, info varchar(255), test_pk int, primary key(id), foreign key (test_pk) references test(pk)); -COPY test_info FROM STDIN (FORMAT CSV, HEADER TRUE); +COPY test_info (id, info, test_pk) FROM STDIN (FORMAT CSV, HEADER TRUE); id,info,test_pk 4,string for 4,1 5,string for 5,0 diff --git a/testing/bats/dataloading/psv-load-with-no-tx-control.sql b/testing/bats/dataloading/psv-load-with-no-tx-control.sql index 08b0d98662..7729100475 100644 --- a/testing/bats/dataloading/psv-load-with-no-tx-control.sql +++ b/testing/bats/dataloading/psv-load-with-no-tx-control.sql @@ -3,7 +3,7 @@ INSERT INTO test VALUES (0), (1); CREATE TABLE test_info (id int, info varchar(255), test_pk int, primary key(id), foreign key (test_pk) references test(pk)); -COPY test_info FROM STDIN (FORMAT CSV, HEADER TRUE, DELIMITER '|'); +COPY test_info (id, info, test_pk) FROM STDIN (FORMAT CSV, HEADER TRUE, DELIMITER '|'); id|info|test_pk 4|string for 4|1 5|string for 5|0 diff --git a/testing/bats/dataloading/tab-load-with-delimiter-no-tx-control.sql b/testing/bats/dataloading/tab-load-with-delimiter-no-tx-control.sql index 83f455ac5e..3a47fcc731 100644 --- a/testing/bats/dataloading/tab-load-with-delimiter-no-tx-control.sql +++ b/testing/bats/dataloading/tab-load-with-delimiter-no-tx-control.sql @@ -3,7 +3,7 @@ INSERT INTO test VALUES (0), (1); CREATE TABLE test_info (id int, info varchar(255), test_pk int, primary key(id), foreign key (test_pk) references test(pk)); -COPY test_info FROM STDIN WITH (DELIMITER '|', HEADER); +COPY test_info (id, info, test_pk) FROM STDIN WITH (DELIMITER '|', HEADER); id|info|test_pk 4|string for 4|1 5|string for 5|0 diff --git a/testing/bats/dataloading/tab-load-with-no-tx-control.sql b/testing/bats/dataloading/tab-load-with-no-tx-control.sql index afa06d48b4..45e9f9e53c 100644 --- a/testing/bats/dataloading/tab-load-with-no-tx-control.sql +++ b/testing/bats/dataloading/tab-load-with-no-tx-control.sql @@ -3,7 +3,7 @@ INSERT INTO test VALUES (0), (1); CREATE TABLE test_info (id int, info varchar(255), test_pk int, primary key(id), foreign key (test_pk) references test(pk)); -COPY test_info FROM STDIN WITH (HEADER); +COPY test_info (id, info, test_pk) FROM STDIN WITH (HEADER); id info test_pk 4 string for 4 1 5 string for 5 0 diff --git a/testing/go/copy_test.go b/testing/go/copy_test.go index 5b11dd1660..f2a859ac85 100755 --- a/testing/go/copy_test.go +++ b/testing/go/copy_test.go @@ -37,7 +37,7 @@ func TestCopy(t *testing.T) { }, Assertions: []ScriptTestAssertion{ { - Query: "COPY test_info FROM STDIN WITH (HEADER);", + Query: "COPY test_info (id, info, test_pk) FROM STDIN WITH (HEADER);", CopyFromStdInFile: "tab-load-with-header.sql", }, { @@ -96,7 +96,7 @@ func TestCopy(t *testing.T) { }, Assertions: []ScriptTestAssertion{ { - Query: "COPY tbl1 FROM STDIN WITH (HEADER)", + Query: "COPY tbl1 (pk, ts) FROM STDIN WITH (HEADER)", CopyFromStdInFile: "tab-load-with-timestamp-col.sql", }, { @@ -116,7 +116,7 @@ func TestCopy(t *testing.T) { }, Assertions: []ScriptTestAssertion{ { - Query: "COPY tbl1 FROM STDIN (FORMAT CSV)", + Query: "COPY tbl1 (pk, c1, c2) FROM STDIN (FORMAT CSV)", CopyFromStdInFile: "csv-load-basic-cases.sql", }, { @@ -142,7 +142,7 @@ bar`, "baz"}, }, Assertions: []ScriptTestAssertion{ { - Query: " COPY tbl1 FROM STDIN (FORMAT CSV, HEADER TRUE);", + Query: " COPY tbl1 (pk, c1, c2) FROM STDIN (FORMAT CSV, HEADER TRUE);", CopyFromStdInFile: "csv-load-with-header.sql", }, { @@ -188,7 +188,7 @@ bar`, "baz", 16}, }, Assertions: []ScriptTestAssertion{ { - Query: "COPY tbl1 FROM STDIN (FORMAT CSV);", + Query: "COPY tbl1 (pk, c1, c2) FROM STDIN (FORMAT CSV);", CopyFromStdInFile: "csv-load-multi-chunk.sql", }, { @@ -208,7 +208,7 @@ bar`, "baz", 16}, }, Assertions: []ScriptTestAssertion{ { - Query: "COPY test_info FROM STDIN (FORMAT CSV, HEADER TRUE, DELIMITER '|');", + Query: "COPY test_info (id, info, test_pk) FROM STDIN (FORMAT CSV, HEADER TRUE, DELIMITER '|');", CopyFromStdInFile: "psv-load.sql", }, { @@ -228,7 +228,7 @@ bar`, "baz", 16}, }, Assertions: []ScriptTestAssertion{ { - Query: fmt.Sprintf("COPY tbl1 FROM '%s' (FORMAT CSV)", filepath.Join(absTestDataDir, "csv-load-basic-cases.sql")), + Query: fmt.Sprintf("COPY tbl1 (pk, c1, c2) FROM '%s' (FORMAT CSV)", filepath.Join(absTestDataDir, "csv-load-basic-cases.sql")), SkipResultsCheck: true, }, { @@ -282,7 +282,7 @@ bar`, "baz"}, }, Assertions: []ScriptTestAssertion{ { - Query: fmt.Sprintf("COPY test_info FROM '%s' WITH (HEADER)", filepath.Join(absTestDataDir, "tab-load-with-header.sql")), + Query: fmt.Sprintf("COPY test_info (id, info, test_pk) FROM '%s' WITH (HEADER)", filepath.Join(absTestDataDir, "tab-load-with-header.sql")), }, { Query: "SELECT * FROM test_info order by 1;", @@ -362,7 +362,7 @@ bar`, "baz"}, Name: "read only table", Assertions: []ScriptTestAssertion{ { - Query: fmt.Sprintf("COPY dolt_log FROM '%s' (FORMAT CSV)", filepath.Join(absTestDataDir, "csv-load-basic-cases.sql")), + Query: fmt.Sprintf("COPY dolt_log (commit_hash, committer, email, date, message, commit_order) FROM '%s' (FORMAT CSV)", filepath.Join(absTestDataDir, "csv-load-basic-cases.sql")), ExpectedErr: "table doesn't support INSERT INTO", }, }, diff --git a/testing/go/regression/tests/aggregates.sql b/testing/go/regression/tests/aggregates.sql index 48bea8af5f..1f191bc8a1 100644 --- a/testing/go/regression/tests/aggregates.sql +++ b/testing/go/regression/tests/aggregates.sql @@ -15,7 +15,7 @@ CREATE TABLE aggtest ( ); \set filename :abs_srcdir '/data/agg.data' -COPY aggtest FROM :'filename'; +COPY aggtest (a, b) FROM :'filename'; ANALYZE aggtest; @@ -231,7 +231,7 @@ SELECT BIT_XOR(i8) AS "?" FROM bitwise_test; -COPY bitwise_test FROM STDIN NULL 'null'; +COPY bitwise_test (i2, i4, i8, i, x, y) FROM STDIN NULL 'null'; 1 1 1 1 1 B0101 3 3 3 null 2 B0100 7 7 7 3 4 B1100 @@ -305,7 +305,7 @@ SELECT BOOL_OR(b3) AS "n" FROM bool_test; -COPY bool_test FROM STDIN NULL 'null'; +COPY bool_test (b1, b2, b3, b4) FROM STDIN NULL 'null'; TRUE null FALSE null FALSE TRUE null null null TRUE FALSE null diff --git a/testing/go/regression/tests/interval.sql b/testing/go/regression/tests/interval.sql index 5b4944c2aa..884c949a37 100644 --- a/testing/go/regression/tests/interval.sql +++ b/testing/go/regression/tests/interval.sql @@ -99,7 +99,7 @@ DROP TABLE INTERVAL_TBL_OF; -- stored internally. CREATE TABLE INTERVAL_MULDIV_TBL (span interval); -COPY INTERVAL_MULDIV_TBL FROM STDIN; +COPY INTERVAL_MULDIV_TBL (span) FROM STDIN; 41 mon 12 days 360:00 -41 mon -12 days +360:00 -12 days diff --git a/testing/go/regression/tests/psql.sql b/testing/go/regression/tests/psql.sql index 94a54d6fd8..afe7e763c9 100644 --- a/testing/go/regression/tests/psql.sql +++ b/testing/go/regression/tests/psql.sql @@ -1364,7 +1364,7 @@ ROLLBACK; SELECT 'ok' AS "begin" \; CREATE TABLE psql_comics(s TEXT) \; INSERT INTO psql_comics VALUES ('Calvin'), ('hobbes') \; -COPY psql_comics FROM STDIN \; +COPY psql_comics (s) FROM STDIN \; UPDATE psql_comics SET s = 'Hobbes' WHERE s = 'hobbes' \; DELETE FROM psql_comics WHERE s = 'Moe' \; COPY psql_comics TO STDOUT \; diff --git a/testing/go/regression/tests/rowsecurity.sql b/testing/go/regression/tests/rowsecurity.sql index 34ea204560..472f2ec3b0 100644 --- a/testing/go/regression/tests/rowsecurity.sql +++ b/testing/go/regression/tests/rowsecurity.sql @@ -1614,14 +1614,14 @@ COPY copy_rel_to TO STDOUT WITH DELIMITER ','; --fail - permission denied -- Check COPY FROM as Superuser/owner. RESET SESSION AUTHORIZATION; SET row_security TO OFF; -COPY copy_t FROM STDIN; --ok +COPY copy_t (a, b) FROM STDIN; --ok 1 abc 2 bcd 3 cde 4 def \. SET row_security TO ON; -COPY copy_t FROM STDIN; --ok +COPY copy_t (a, b) FROM STDIN; --ok 1 abc 2 bcd 3 cde @@ -1631,14 +1631,14 @@ COPY copy_t FROM STDIN; --ok -- Check COPY FROM as user with permissions. SET SESSION AUTHORIZATION regress_rls_bob; SET row_security TO OFF; -COPY copy_t FROM STDIN; --fail - would be affected by RLS. +COPY copy_t (a, b) FROM STDIN; --fail - would be affected by RLS. SET row_security TO ON; -COPY copy_t FROM STDIN; --fail - COPY FROM not supported by RLS. +COPY copy_t (a, b) FROM STDIN; --fail - COPY FROM not supported by RLS. -- Check COPY FROM as user with permissions and BYPASSRLS SET SESSION AUTHORIZATION regress_rls_exempt_user; SET row_security TO ON; -COPY copy_t FROM STDIN; --ok +COPY copy_t (a, b) FROM STDIN; --ok 1 abc 2 bcd 3 cde @@ -1648,9 +1648,9 @@ COPY copy_t FROM STDIN; --ok -- Check COPY FROM as user without permissions. SET SESSION AUTHORIZATION regress_rls_carol; SET row_security TO OFF; -COPY copy_t FROM STDIN; --fail - permission denied. +COPY copy_t (a, b) FROM STDIN; --fail - permission denied. SET row_security TO ON; -COPY copy_t FROM STDIN; --fail - permission denied. +COPY copy_t (a, b) FROM STDIN; --fail - permission denied. RESET SESSION AUTHORIZATION; DROP TABLE copy_t; diff --git a/testing/go/smoke_test.go b/testing/go/smoke_test.go index 9a89d7f11c..a66b63b649 100644 --- a/testing/go/smoke_test.go +++ b/testing/go/smoke_test.go @@ -706,7 +706,7 @@ func TestSmokeTests(t *testing.T) { }, { Query: "insert into pg_attribute values (1);", - ExpectedErr: "number of values does not match number of columns provided", + ExpectedErr: "Column count doesn't match value count at row 1", }, { Query: "insert into public.pg_attribute values (1);",