mv tests to binlogreplication/

This commit is contained in:
elianddb
2025-11-05 00:57:22 -08:00
parent 73e4774002
commit f1d02f5588
17 changed files with 421 additions and 233 deletions
@@ -0,0 +1,211 @@
// 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 binlogreplication_test
import (
"os"
"path/filepath"
"runtime"
"strings"
"testing"
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/sql"
"github.com/dolthub/go-mysql-server/sql/types"
"github.com/stretchr/testify/require"
"github.com/dolthub/dolt/go/libraries/doltcore/sqle/binlogreplication"
doltenginetest "github.com/dolthub/dolt/go/libraries/doltcore/sqle/enginetest"
)
var (
binlogInsertStmts = parseBinlogTestFile("binlog_insert.txt")
binlogUpdateStmts = parseBinlogTestFile("binlog_update.txt")
binlogDeleteStmts = parseBinlogTestFile("binlog_delete.txt")
binlogFormatDescStmts = parseBinlogTestFile("binlog_format_desc.txt")
binlogTransactionMultiOps = parseBinlogTestFile("binlog_transaction_multi_ops.txt")
binlogNoFormatDescStmts = parseBinlogTestFile("binlog_no_format_desc.txt")
)
// binlogScripts contains test cases for the BINLOG statement. To add tests: add a @test to binlog_maker.bats, generate
// the .txt file with BINLOG statements, then add a test case here with the corresponding setup.
var binlogScripts = []queries.ScriptTest{
{
Name: "SET collation variables with numeric IDs from binlog",
Assertions: []queries.ScriptTestAssertion{
// TODO: lc_time_names no-op
{Query: "SET @@session.lc_time_names=0", Expected: []sql.Row{{types.OkResult{}}}},
{Query: "SELECT @@session.lc_time_names", Expected: []sql.Row{{"0"}}},
},
},
{
Name: "BINLOG requires FORMAT_DESCRIPTION_EVENT first",
SetUpScript: []string{
"CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100))",
},
Assertions: []queries.ScriptTestAssertion{
{Query: binlogNoFormatDescStmts[0], ExpectedErr: sql.ErrNoFormatDescriptionEventBeforeBinlogStatement},
},
},
{
Name: "BINLOG with simple INSERT",
SetUpScript: []string{
"CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100))",
},
Assertions: []queries.ScriptTestAssertion{
{Query: binlogInsertStmts[0], Expected: []sql.Row{{types.OkResult{}}}},
{Query: binlogInsertStmts[1], Expected: []sql.Row{{types.OkResult{}}}},
{Query: binlogInsertStmts[2], Expected: []sql.Row{{types.OkResult{}}}},
{
Query: "SELECT * FROM users ORDER BY id",
Expected: []sql.Row{
{1, "Alice", "alice@example.com"},
{2, "Bob", "bob@example.com"},
},
},
},
},
{
Name: "BINLOG with UPDATE",
SetUpScript: []string{
"CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100))",
"INSERT INTO users VALUES (1, 'Alice', 'alice@example.com')",
"INSERT INTO users VALUES (2, 'Bob', 'bob@example.com')",
},
Assertions: []queries.ScriptTestAssertion{
{Query: binlogUpdateStmts[0], Expected: []sql.Row{{types.OkResult{}}}},
{Query: binlogUpdateStmts[1], Expected: []sql.Row{{types.OkResult{}}}},
{
Query: "SELECT name FROM users WHERE id = 1",
Expected: []sql.Row{
{"Alice Smith"},
},
},
},
},
{
Name: "BINLOG with DELETE",
SetUpScript: []string{
"CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100))",
"INSERT INTO users VALUES (1, 'Alice', 'alice@example.com')",
"INSERT INTO users VALUES (2, 'Bob', 'bob@example.com')",
},
Assertions: []queries.ScriptTestAssertion{
{Query: binlogDeleteStmts[0], Expected: []sql.Row{{types.OkResult{}}}},
{Query: binlogDeleteStmts[1], Expected: []sql.Row{{types.OkResult{}}}},
{
Query: "SELECT COUNT(*) FROM users",
Expected: []sql.Row{
{1},
},
},
{
Query: "SELECT id FROM users",
Expected: []sql.Row{
{1},
},
},
},
},
{
Name: "BINLOG with FORMAT_DESCRIPTION only",
Assertions: []queries.ScriptTestAssertion{
{Query: binlogFormatDescStmts[0], Expected: []sql.Row{{types.OkResult{}}}},
},
},
{
Name: "BINLOG transaction with multiple INSERT UPDATE DELETE",
SetUpScript: []string{
"CREATE TABLE multi_op_test (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100), value DECIMAL(10,2), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)",
},
Assertions: []queries.ScriptTestAssertion{
{Query: binlogTransactionMultiOps[0], Expected: []sql.Row{{types.OkResult{}}}},
{Query: binlogTransactionMultiOps[1], Expected: []sql.Row{{types.OkResult{}}}},
{Query: binlogTransactionMultiOps[2], Expected: []sql.Row{{types.OkResult{}}}},
{Query: binlogTransactionMultiOps[3], Expected: []sql.Row{{types.OkResult{}}}},
{Query: binlogTransactionMultiOps[4], Expected: []sql.Row{{types.OkResult{}}}},
{Query: binlogTransactionMultiOps[5], Expected: []sql.Row{{types.OkResult{}}}},
{
Query: "SELECT COUNT(*) FROM multi_op_test",
Expected: []sql.Row{
{2},
},
},
{
Query: "SELECT value FROM multi_op_test WHERE id = 1",
Expected: []sql.Row{
{"109.99"},
},
},
},
},
{
Name: "BINLOG with invalid base64",
Assertions: []queries.ScriptTestAssertion{
{
Query: "BINLOG 'not-valid-base64!!!'",
ExpectedErr: sql.ErrBase64DecodeError,
},
},
},
}
// parseBinlogTestFile parses BINLOG statements from a testdata file. The file is pre-filtered by binlog_maker.bats to
// contain only BINLOG statements.
func parseBinlogTestFile(filename string) []string {
_, sourceFile, _, _ := runtime.Caller(0)
sourceDir := filepath.Dir(sourceFile)
testdataPath := filepath.Join(sourceDir, "testdata", filename)
data, err := os.ReadFile(testdataPath)
if err != nil {
return nil
}
content := strings.TrimSpace(string(data))
if content == "" {
return nil
}
parts := strings.Split(content, "BINLOG '")
var stmts []string
for i, part := range parts {
if i == 0 && part == "" {
continue
}
stmts = append(stmts, "BINLOG '"+part)
}
return stmts
}
// TestBinlog tests the BINLOG statement functionality using the Dolt engine.
func TestBinlog(t *testing.T) {
harness := doltenginetest.NewDoltEnginetestHarness(t)
engine, err := harness.NewEngine(t)
require.NoError(t, err)
binlogConsumer := binlogreplication.DoltBinlogConsumer
binlogConsumer.SetEngine(engine.(*gms.Engine))
engine.EngineAnalyzer().Catalog.BinlogConsumer = binlogConsumer
for _, script := range binlogScripts {
t.Run(script.Name, func(t *testing.T) {
enginetest.TestScript(t, harness, script)
})
}
}
@@ -63,9 +63,15 @@ type binlogReplicaApplier struct {
filters *filterConfiguration
engine *gms.Engine
// TODO: MariaDB stores this state per-connection at thd->rgi_fake->m_table_map.
// See https://github.com/MariaDB/server/blob/mariadb-11.4.8/sql/sql_binlog.cc#L270-L271
// See https://github.com/MariaDB/server/blob/mariadb-11.4.8/sql/rpl_rli.h#L811
// TODO: BINLOG statement state should be per-connection, not global.
// Currently, DoltBinlogConsumer is a global singleton shared across all SQL connections,
// meaning concurrent BINLOG statements from different connections will corrupt each other's
// table map and format state.
//
// MariaDB solves this with per-thread state: thd->rgi_fake->m_table_map
// See: https://github.com/MariaDB/server/blob/mariadb-11.4.8/sql/sql_binlog.cc#L270-L271
// This is separate from the replication applier (which IS correctly single-threaded).
// Test case: Execute BINLOG statements concurrently from two connections and verify no corruption.
format *mysql.BinlogFormat
tableMapsById map[uint64]*mysql.TableMap
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package enginetest
package binlogreplication
import (
"os"
@@ -201,3 +201,4 @@ func parseBinlogTestFile(filename string) []string {
}
return stmts
}
@@ -1,12 +1,12 @@
BINLOG '
duQIaQ8BAAAA/AAAAAABAAAAAAQAMTAuMTEuMTMtTWFyaWFEQi0wdWJ1bnR1MC4yNC4wNC4xLWxv
MvgKaQ8BAAAA/AAAAAABAAAAAAQAMTAuMTEuMTMtTWFyaWFEQi0wdWJ1bnR1MC4yNC4wNC4xLWxv
ZwAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAA5AAEGggAAAAICAgCAAAACgoKAAAAAAAA
CgoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAEEwQADQgICAoKCgFEz80A
AAAAAAAAAAAEEwQADQgICAoKCgHkFQ9g
'/*!*/;
BINLOG '
duQIaRMBAAAANgAAAO0BAAAAABIAAAAAAAEABG15ZGIABXVzZXJzAAMDDw8EMgBkAAZ21DS1
duQIaRkBAAAAOgAAACcCAAAAABIAAAAAAAEAAwf4AgAAAANCb2IPYm9iQGV4YW1wbGUuY29t1lLm
VQ==
MvgKaRMBAAAANgAAAHwCAAAAABIAAAAAAAEABG15ZGIABXVzZXJzAAMDDw8EMgBkAAZndzVD
MvgKaRkBAAAAOgAAALYCAAAAABIAAAAAAAEAAwf4AgAAAANCb2IPYm9iQGV4YW1wbGUuY29t9VcE
AQ==
'/*!*/;
@@ -1,7 +1,7 @@
BINLOG '
duQIaQ8BAAAA/AAAAAABAAAAAAQAMTAuMTEuMTMtTWFyaWFEQi0wdWJ1bnR1MC4yNC4wNC4xLWxv
MvgKaQ8BAAAA/AAAAAABAAAAAAQAMTAuMTEuMTMtTWFyaWFEQi0wdWJ1bnR1MC4yNC4wNC4xLWxv
ZwAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAA5AAEGggAAAAICAgCAAAACgoKAAAAAAAA
CgoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAEEwQADQgICAoKCgFEz80A
AAAAAAAAAAAEEwQADQgICAoKCgHkFQ9g
'/*!*/;
@@ -0,0 +1,17 @@
BINLOG '
MfgKaQ8BAAAA/AAAAAABAAAAAAQAMTAuMTEuMTMtTWFyaWFEQi0wdWJ1bnR1MC4yNC4wNC4xLWxv
ZwAAAAAAAAAAAAAAAAAx+AppEzgNAAgAEgAEBAQEEgAA5AAEGggAAAAICAgCAAAACgoKAAAAAAAA
CgoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAEEwQADQgICAoKCgHdTczf
'/*!*/;
BINLOG '
MvgKaRMBAAAANgAAAE0DAAAAABIAAAAAAAEABG15ZGIABXVzZXJzAAMDDw8EMgBkAAYqUfHw
MvgKaRcBAAAAPgAAAIsDAAAAABIAAAAAAAEAAwf4AQAAAAVBbGljZRFhbGljZUBleGFtcGxlLmNv
beY3d7I=
'/*!*/;
BINLOG '
MvgKaRMBAAAANgAAAFcEAAAAABIAAAAAAAEABG15ZGIABXVzZXJzAAMDDw8EMgBkAAb/q0rI
MvgKaRcBAAAAOgAAAJEEAAAAABIAAAAAAAEAAwf4AgAAAANCb2IPYm9iQGV4YW1wbGUuY29t2z2A
QA==
'/*!*/;
@@ -67,30 +67,23 @@ teardown_file() {
fi
}
setup() {
mariadb --socket="$MARIADB_SOCKET" -u root -e "CREATE DATABASE IF NOT EXISTS mydb;"
}
extract_binlog_to_file() {
local binlog_file="$1"
local output_file="$2"
local database="${3:-}"
# Extract only BINLOG statements from mariadb-binlog output
# This filters out SET commands, DELIMITER, comments, etc.
if [ -n "$database" ]; then
mariadb-binlog --database="$database" "$binlog_file" | \
awk '/^BINLOG /{flag=1} flag{print} /'\''\/\*!\*\/;$/{flag=0}' > "$output_file"
else
mariadb-binlog "$binlog_file" | \
awk '/^BINLOG /{flag=1} flag{print} /'\''\/\*!\*\/;$/{flag=0}' > "$output_file"
fi
mariadb-binlog --database="mydb" "$binlog_file" | \
awk '/^BINLOG /{flag=1} flag{print} /'\''\/\*!\*\/;$/{flag=0}' > "$output_file"
[ -f "$output_file" ]
[ -s "$output_file" ]
}
@test "binlog_maker: simple INSERT with row events" {
mariadb --socket="$MARIADB_SOCKET" -u root <<SQL
DROP DATABASE IF EXISTS mydb;
CREATE DATABASE mydb;
USE mydb;
mariadb --socket="$MARIADB_SOCKET" -u root mydb <<SQL
CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100));
INSERT INTO users VALUES (1, 'Alice', 'alice@example.com');
INSERT INTO users VALUES (2, 'Bob', 'bob@example.com');
@@ -102,8 +95,7 @@ SQL
}
@test "binlog_maker: UPDATE with row events" {
mariadb --socket="$MARIADB_SOCKET" -u root <<SQL
USE mydb;
mariadb --socket="$MARIADB_SOCKET" -u root mydb <<SQL
UPDATE users SET name = 'Alice Smith' WHERE id = 1;
SQL
@@ -113,8 +105,7 @@ SQL
}
@test "binlog_maker: DELETE with row events" {
mariadb --socket="$MARIADB_SOCKET" -u root <<SQL
USE mydb;
mariadb --socket="$MARIADB_SOCKET" -u root mydb <<SQL
DELETE FROM users WHERE id = 2;
SQL
@@ -135,8 +126,7 @@ SQL
@test "binlog_maker: TABLE_MAP without FORMAT_DESCRIPTION (for error test)" {
# Create a new operation to get TABLE_MAP
mariadb --socket="$MARIADB_SOCKET" -u root <<SQL
USE mydb;
mariadb --socket="$MARIADB_SOCKET" -u root mydb <<SQL
INSERT INTO users VALUES (100, 'Test', 'test@example.com');
SQL
@@ -144,7 +134,7 @@ SQL
# Extract BINLOG statements but skip the FORMAT_DESCRIPTION to simulate error condition
# Skip the first BINLOG statement (FORMAT_DESCRIPTION), keep the rest
mariadb-binlog "$MARIADB_BINLOG_DIR/mariadb-bin.000005" | \
mariadb-binlog --database=mydb "$MARIADB_BINLOG_DIR/mariadb-bin.000005" | \
awk '/^BINLOG /{flag=1} flag{print} /'\''\/\*!\*\/;$/{flag=0}' | \
awk 'BEGIN{first=1} /^BINLOG /{if(first){skip=1;first=0}else{skip=0}} !skip{print}' > "$TEST_DIR/binlog_no_format_desc.txt"
@@ -153,8 +143,7 @@ SQL
}
@test "binlog_maker: transaction with multiple INSERT UPDATE DELETE" {
mariadb --socket="$MARIADB_SOCKET" -u root <<SQL
USE mydb;
mariadb --socket="$MARIADB_SOCKET" -u root mydb <<SQL
DROP TABLE IF EXISTS multi_op_test;
CREATE TABLE multi_op_test (
id INT PRIMARY KEY AUTO_INCREMENT,
@@ -0,0 +1,5 @@
BINLOG '
MvgKaRMBAAAANgAAAJgCAAAAABIAAAAAAAEABG15ZGIABXVzZXJzAAMDDw8EMgBkAAZ9BZ4d
MvgKaRcBAAAAPAAAANQCAAAAABIAAAAAAAEAAwf4ZAAAAARUZXN0EHRlc3RAZXhhbXBsZS5jb225
3zLU
'/*!*/;
@@ -0,0 +1,33 @@
BINLOG '
MvgKaQ8BAAAA/AAAAAABAAAAAAQAMTAuMTEuMTMtTWFyaWFEQi0wdWJ1bnR1MC4yNC4wNC4xLWxv
ZwAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAA5AAEGggAAAAICAgCAAAACgoKAAAAAAAA
CgoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAEEwQADQgICAoKCgHkFQ9g
'/*!*/;
BINLOG '
MvgKaRMBAAAAQAAAAJ4EAAAAABYAAAAAAAEABG15ZGIADW11bHRpX29wX3Rlc3QABAMP9hEFZAAK
AgAOwfA6TQ==
MvgKaRcBAAAANQAAANMEAAAAABYAAAAAAAEABA/wAQAAAAVJdGVtMYAAAGNjaQr4Mo7phU4=
'/*!*/;
BINLOG '
MvgKaRMBAAAAQAAAAGoFAAAAABYAAAAAAAEABG15ZGIADW11bHRpX29wX3Rlc3QABAMP9hEFZAAK
AgAOBVHCeQ==
MvgKaRcBAAAANQAAAJ8FAAAAABYAAAAAAAEABA/wAgAAAAVJdGVtMoAAAJUyaQr4Mtiz1XQ=
'/*!*/;
BINLOG '
MvgKaRMBAAAAQAAAADUGAAAAABYAAAAAAAEABG15ZGIADW11bHRpX29wX3Rlc3QABAMP9hEFZAAK
AgAOIZEfZA==
MvgKaRcBAAAANQAAAGoGAAAAABYAAAAAAAEABA/wAwAAAAVJdGVtM4AAAEsZaQr4MlynuVg=
'/*!*/;
BINLOG '
MvgKaRMBAAAAQAAAAPsGAAAAABYAAAAAAAEABG15ZGIADW11bHRpX29wX3Rlc3QABAMP9hEFZAAK
AgAOKRGYYw==
MvgKaRgBAAAAcgAAAG0HAAAAABYAAAAAAAEABA8P8AEAAAAFSXRlbTGAAABjY2kK+DLwAQAAAAVJ
dGVtMYAAAG1jaQr4MvACAAAABUl0ZW0ygAAAlTJpCvgy8AIAAAAFSXRlbTKAAACkLWkK+DLWpvgi
'/*!*/;
BINLOG '
MvgKaRMBAAAAQAAAAOoHAAAAABYAAAAAAAEABG15ZGIADW11bHRpX29wX3Rlc3QABAMP9hEFZAAK
AgAOyigNVA==
MvgKaRkBAAAANQAAAB8IAAAAABYAAAAAAAEABA/wAwAAAAVJdGVtM4AAAEsZaQr4MvJ5Lls=
'/*!*/;
@@ -1,12 +1,12 @@
BINLOG '
duQIaQ8BAAAA/AAAAAABAAAAAAQAMTAuMTEuMTMtTWFyaWFEQi0wdWJ1bnR1MC4yNC4wNC4xLWxv
MvgKaQ8BAAAA/AAAAAABAAAAAAQAMTAuMTEuMTMtTWFyaWFEQi0wdWJ1bnR1MC4yNC4wNC4xLWxv
ZwAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAA5AAEGggAAAAICAgCAAAACgoKAAAAAAAA
CgoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAEEwQADQgICAoKCgFEz80A
AAAAAAAAAAAEEwQADQgICAoKCgHkFQ9g
'/*!*/;
BINLOG '
duQIaRMBAAAANgAAAC4CAAAAABIAAAAAAAEABG15ZGIABXVzZXJzAAMDDw8EMgBkAAY3DTV/
duQIaRgBAAAAYgAAAJACAAAAABIAAAAAAAEAAwcH+AEAAAAFQWxpY2URYWxpY2VAZXhhbXBsZS5j
b234AQAAAAtBbGljZSBTbWl0aBFhbGljZUBleGFtcGxlLmNvbU4BbNI=
MvgKaRMBAAAANgAAAL0CAAAAABIAAAAAAAEABG15ZGIABXVzZXJzAAMDDw8EMgBkAAan/UU3
MvgKaRgBAAAAYgAAAB8DAAAAABIAAAAAAAEAAwcH+AEAAAAFQWxpY2URYWxpY2VAZXhhbXBsZS5j
b234AQAAAAtBbGljZSBTbWl0aBFhbGljZUBleGFtcGxlLmNvbVeVJ0U=
'/*!*/;
@@ -98,7 +98,7 @@ func TestSingleQuery(t *testing.T) {
}
func TestSchemaOverrides(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunSchemaOverridesTest(t, harness)
}
@@ -107,7 +107,7 @@ func TestSchemaOverrides(t *testing.T) {
func TestSchemaOverridesWithAdaptiveEncoding(t *testing.T) {
defer func() { schema.UseAdaptiveEncoding = false }()
schema.UseAdaptiveEncoding = true
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunSchemaOverridesTest(t, harness)
}
@@ -188,7 +188,7 @@ func newUpdateResult(matched, updated int) gmstypes.OkResult {
}
func TestAutoIncrementTrackerLockMode(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunAutoIncrementTrackerLockModeTest(t, harness)
}
@@ -427,7 +427,7 @@ func TestSingleScriptPrepared(t *testing.T) {
}
func TestVersionedQueries(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
defer h.Close()
RunVersionedQueriesTest(t, h)
@@ -444,23 +444,23 @@ func TestAnsiQuotesSqlModePrepared(t *testing.T) {
// Tests of choosing the correct execution plan independent of result correctness. Mostly useful for confirming that
// the right indexes are being used for joining tables.
func TestQueryPlans(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunQueryTestPlans(t, harness)
}
func TestIntegrationQueryPlans(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
defer harness.Close()
enginetest.TestIntegrationPlans(t, harness)
}
func TestDoltDiffQueryPlans(t *testing.T) {
harness := newDoltEnginetestHarness(t).WithParallelism(2) // want Exchange nodes
harness := NewDoltEnginetestHarness(t).WithParallelism(2) // want Exchange nodes
RunDoltDiffQueryPlansTest(t, harness)
}
func TestBranchPlans(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunBranchPlanTests(t, harness)
}
@@ -471,7 +471,7 @@ func TestQueryErrors(t *testing.T) {
}
func TestInfoSchema(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunInfoSchemaTests(t, h)
}
@@ -540,12 +540,12 @@ func TestIgnoreIntoWithDuplicateUniqueKeyKeylessPrepared(t *testing.T) {
}
func TestInsertIntoErrors(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunInsertIntoErrorsTest(t, h)
}
func TestGeneratedColumns(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunGeneratedColumnTests(t, harness)
}
@@ -744,7 +744,7 @@ func TestJoinOps(t *testing.T) {
}
func TestJoinPlanning(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
defer h.Close()
enginetest.TestJoinPlanning(t, h)
}
@@ -822,12 +822,12 @@ func TestRowLimit(t *testing.T) {
}
func TestBranchDdl(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunBranchDdlTest(t, h)
}
func TestBranchDdlPrepared(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunBranchDdlTestPrepared(t, h)
}
@@ -940,7 +940,7 @@ func TestAdaptiveEncoding(t *testing.T) {
}
func TestDropDatabase(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDropEngineTest(t, h)
}
@@ -963,12 +963,12 @@ func TestForeignKeys(t *testing.T) {
}
func TestForeignKeyBranches(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunForeignKeyBranchesTest(t, h)
}
func TestForeignKeyBranchesPrepared(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunForeignKeyBranchesPreparedTest(t, h)
}
@@ -1027,17 +1027,17 @@ func TestViews(t *testing.T) {
}
func TestBranchViews(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunBranchViewsTest(t, h)
}
func TestBranchViewsPrepared(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunBranchViewsPreparedTest(t, h)
}
func TestVersionedViews(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunVersionedViewsTest(t, h)
}
@@ -1109,7 +1109,7 @@ func TestAlterTable(t *testing.T) {
}
func TestVariables(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunVariableTest(t, h)
}
@@ -1141,12 +1141,6 @@ func TestLoadDataErrors(t *testing.T) {
enginetest.TestLoadDataErrors(t, h)
}
func TestBinlog(t *testing.T) {
harness := newDoltHarness(t)
defer harness.Close()
RunBinlogTests(t, harness)
}
func TestSelectIntoFile(t *testing.T) {
h := newDoltHarness(t)
defer h.Close()
@@ -1176,17 +1170,17 @@ func TestRollbackTriggers(t *testing.T) {
}
func TestStoredProcedures(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunStoredProceduresTest(t, h)
}
func TestDoltStoredProcedures(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltStoredProceduresTest(t, h)
}
func TestDoltStoredProceduresPrepared(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltStoredProceduresPreparedTest(t, h)
}
@@ -1197,37 +1191,37 @@ func TestEvents(t *testing.T) {
}
func TestCallAsOf(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunCallAsOfTest(t, h)
}
func TestLargeJsonObjects(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunLargeJsonObjectsTest(t, harness)
}
func TestTransactions(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunTransactionTests(t, h, false)
}
func TestTransactionsPrepared(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunTransactionTests(t, h, true)
}
func TestBranchTransactions(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunBranchTransactionTest(t, h)
}
func TestMultiDbTransactions(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunMultiDbTransactionsTest(t, h)
}
func TestMultiDbTransactionsPrepared(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunMultiDbTransactionsPreparedTest(t, h)
}
@@ -1238,27 +1232,27 @@ func TestConcurrentTransactions(t *testing.T) {
}
func TestDoltScripts(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunDoltScriptsTest(t, harness)
}
func TestDoltTempTableScripts(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunDoltTempTableScripts(t, harness)
}
func TestDoltRevisionDbScripts(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltRevisionDbScriptsTest(t, h)
}
func TestDoltRevisionDbScriptsPrepared(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltRevisionDbScriptsPreparedTest(t, h)
}
func TestDoltDdlScripts(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunDoltDdlScripts(t, harness)
}
@@ -1275,12 +1269,12 @@ func TestDescribeTableAsOf(t *testing.T) {
}
func TestShowCreateTable(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunShowCreateTableTests(t, h)
}
func TestShowCreateTablePrepared(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunShowCreateTablePreparedTests(t, h)
}
@@ -1298,17 +1292,17 @@ func TestViewsWithAsOfPrepared(t *testing.T) {
}
func TestDoltMerge(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltMergeTests(t, h)
}
func TestDoltMergePrepared(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltMergePreparedTests(t, h)
}
func TestDoltRebase(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltRebaseTests(t, h)
}
@@ -1318,49 +1312,49 @@ func TestDoltRebasePrepared(t *testing.T) {
}
func TestDoltRevert(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltRevertTests(t, h)
}
func TestDoltRevertPrepared(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltRevertPreparedTests(t, h)
}
func TestDoltAutoIncrement(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltAutoIncrementTests(t, h)
}
func TestDoltAutoIncrementPrepared(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltAutoIncrementPreparedTests(t, h)
}
func TestDoltConflictsTableNameTable(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltConflictsTableNameTableTests(t, h)
}
// tests new format behavior for keyless merges that create CVs and conflicts
func TestKeylessDoltMergeCVsAndConflicts(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunKeylessDoltMergeCVsAndConflictsTests(t, h)
}
// eventually this will be part of TestDoltMerge
func TestDoltMergeArtifacts(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltMergeArtifacts(t, h)
}
func TestDoltPreviewMergeConflicts(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltPreviewMergeConflictsTests(t, h)
}
func TestDoltPreviewMergeConflictsPrepared(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltPreviewMergeConflictsPreparedTests(t, h)
}
@@ -1380,7 +1374,7 @@ func TestOldFormatMergeConflictsAndCVs(t *testing.T) {
}
func TestDoltReset(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltResetTest(t, h)
}
@@ -1396,32 +1390,32 @@ func TestDoltGC(t *testing.T) {
}
func TestDoltCheckout(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltCheckoutTests(t, h)
}
func TestDoltCheckoutPrepared(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltCheckoutPreparedTests(t, h)
}
func TestDoltBranch(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltBranchTests(t, h)
}
func TestDoltTag(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltTagTests(t, h)
}
func TestDoltRemote(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltRemoteTests(t, h)
}
func TestDoltUndrop(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltUndropTests(t, h)
}
@@ -1494,12 +1488,12 @@ func TestBackupsSystemTable(t *testing.T) {
}
func TestHistorySystemTable(t *testing.T) {
harness := newDoltEnginetestHarness(t).WithParallelism(2)
harness := NewDoltEnginetestHarness(t).WithParallelism(2)
RunHistorySystemTableTests(t, harness)
}
func TestHistorySystemTablePrepared(t *testing.T) {
harness := newDoltEnginetestHarness(t).WithParallelism(2)
harness := NewDoltEnginetestHarness(t).WithParallelism(2)
RunHistorySystemTableTestsPrepared(t, harness)
}
@@ -1517,177 +1511,177 @@ func TestBrokenHistorySystemTablePrepared(t *testing.T) {
}
func TestDoltBranchesSystemTable(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltBranchesSystemTableTests(t, h)
}
func TestDoltBranchesSystemTablePrepared(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltBranchesSystemTableTestsPrepared(t, h)
}
func TestUnscopedDiffSystemTable(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunUnscopedDiffSystemTableTests(t, h)
}
func TestUnscopedDiffSystemTablePrepared(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunUnscopedDiffSystemTableTestsPrepared(t, h)
}
func TestColumnDiffSystemTable(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunColumnDiffSystemTableTests(t, h)
}
func TestColumnDiffSystemTablePrepared(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunColumnDiffSystemTableTestsPrepared(t, h)
}
func TestStatBranchTests(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunStatBranchTests(t, harness)
}
func TestDiffTableFunction(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunDiffTableFunctionTests(t, harness)
}
func TestDiffTableFunctionPrepared(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunDiffTableFunctionTestsPrepared(t, harness)
}
func TestDiffStatTableFunction(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunDiffStatTableFunctionTests(t, harness)
}
func TestDiffStatTableFunctionPrepared(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunDiffStatTableFunctionTestsPrepared(t, harness)
}
func TestDiffSummaryTableFunction(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunDiffSummaryTableFunctionTests(t, harness)
}
func TestDiffSummaryTableFunctionPrepared(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunDiffSummaryTableFunctionTestsPrepared(t, harness)
}
func TestPatchTableFunction(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunDoltPatchTableFunctionTests(t, harness)
}
func TestPatchTableFunctionPrepared(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunDoltPatchTableFunctionTestsPrepared(t, harness)
}
func TestLogTableFunction(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunLogTableFunctionTests(t, harness)
}
func TestLogTableFunctionPrepared(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunLogTableFunctionTestsPrepared(t, harness)
}
func TestBranchStatusTableFunction(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunBranchStatusTableFunctionTests(t, harness)
}
func TestBranchStatusTableFunctionPrepared(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunBranchStatusTableFunctionTestsPrepared(t, harness)
}
func TestDoltReflog(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltReflogTests(t, h)
}
func TestDoltReflogPrepared(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltReflogTestsPrepared(t, h)
}
func TestCommitDiffSystemTable(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunCommitDiffSystemTableTests(t, harness)
}
func TestCommitDiffSystemTablePrepared(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunCommitDiffSystemTableTestsPrepared(t, harness)
}
func TestDiffSystemTable(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltDiffSystemTableTests(t, h)
}
func TestDiffSystemTablePrepared(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltDiffSystemTableTestsPrepared(t, h)
}
func TestNonlocalTable(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunNonlocalTableTests(t, h)
}
func TestNonlocalTablePrepared(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunNonlocalTableTestsPrepared(t, h)
}
func TestSchemaDiffTableFunction(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunSchemaDiffTableFunctionTests(t, harness)
}
func TestSchemaDiffTableFunctionPrepared(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunSchemaDiffTableFunctionTestsPrepared(t, harness)
}
func TestDoltDatabaseCollationDiffs(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunDoltDatabaseCollationDiffsTests(t, harness)
}
func TestQueryDiff(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunQueryDiffTests(t, harness)
}
func TestSystemTableIndexes(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunSystemTableIndexesTests(t, harness)
}
func TestSystemTableIndexesPrepared(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunSystemTableIndexesTestsPrepared(t, harness)
}
func TestSystemTableFunctionIndexes(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunSystemTableFunctionIndexesTests(t, harness)
}
func TestSystemTableFunctionIndexesPrepared(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunSystemTableFunctionIndexesTestsPrepared(t, harness)
}
@@ -1704,7 +1698,7 @@ func TestAddDropPks(t *testing.T) {
}
func TestAddAutoIncrementColumn(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunAddAutoIncrementColumnTests(t, h)
}
@@ -1740,22 +1734,22 @@ func TestTypesOverWire(t *testing.T) {
}
func TestDoltCherryPick(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunDoltCherryPickTests(t, harness)
}
func TestDoltCherryPickPrepared(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunDoltCherryPickTestsPrepared(t, harness)
}
func TestDoltCommit(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunDoltCommitTests(t, harness)
}
func TestDoltCommitPrepared(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunDoltCommitTestsPrepared(t, harness)
}
@@ -1766,19 +1760,19 @@ func TestQueriesPrepared(t *testing.T) {
}
func TestStatsHistograms(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunStatsHistogramTests(t, h)
}
// TestStatsIO force a provider reload in-between setup and assertions that
// forces a round trip of the statistics table before inspecting values.
func TestStatsStorage(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunStatsStorageTests(t, h)
}
func TestJoinStats(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunJoinStatsTests(t, h)
}
@@ -1797,12 +1791,12 @@ func TestSpatialQueriesPrepared(t *testing.T) {
}
func TestPreparedStatistics(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunPreparedStatisticsTests(t, h)
}
func TestVersionedQueriesPrepared(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunVersionedQueriesPreparedTests(t, h)
}
@@ -1892,7 +1886,7 @@ func TestInsertIgnoreScriptsPrepared(t *testing.T) {
func TestInsertErrorScriptsPrepared(t *testing.T) {
skipPreparedTests(t)
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
defer h.Close()
h = h.WithSkippedQueries([]string{
"create table bad (vb varbinary(65535))",
@@ -1973,17 +1967,17 @@ func TestDatabaseCollationWire(t *testing.T) {
}
func TestAddDropPrimaryKeys(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunAddDropPrimaryKeysTests(t, harness)
}
func TestDoltVerifyConstraints(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunDoltVerifyConstraintsTests(t, harness)
}
func TestDoltStorageFormat(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunDoltStorageFormatTests(t, h)
}
@@ -2000,13 +1994,13 @@ func TestDoltStorageFormatPrepared(t *testing.T) {
}
func TestThreeWayMergeWithSchemaChangeScripts(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunThreeWayMergeWithSchemaChangeScripts(t, h)
}
func TestThreeWayMergeWithSchemaChangeScriptsPrepared(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
RunThreeWayMergeWithSchemaChangeScriptsPrepared(t, h)
}
@@ -2152,7 +2146,7 @@ func TestStatsAutoRefreshConcurrency(t *testing.T) {
}
func TestDoltWorkspace(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
RunDoltWorkspaceTests(t, harness)
}
@@ -2163,13 +2157,13 @@ func TestDoltHelpSystemTable(t *testing.T) {
}
func TestDoltStash(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
defer harness.Close()
RunDoltStashSystemTableTests(t, harness)
}
func TestDoltRm(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
defer harness.Close()
RunDoltRmTests(t, harness)
}
@@ -2181,19 +2175,19 @@ func TestTimeQueries(t *testing.T) {
}
func TestDoltQueryCatalogSystemTable(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
defer harness.Close()
RunDoltQueryCatalogTests(t, harness)
}
func TestDoltTestsSystemTable(t *testing.T) {
harness := newDoltEnginetestHarness(t)
harness := NewDoltEnginetestHarness(t)
defer harness.Close()
RunDoltTestsTableTests(t, harness)
}
func TestBranchActivity(t *testing.T) {
h := newDoltEnginetestHarness(t)
h := NewDoltEnginetestHarness(t)
defer h.Close()
RunBranchActivityTests(t, h)
}
@@ -22,8 +22,6 @@ import (
"testing"
"time"
"github.com/dolthub/dolt/go/libraries/doltcore/sqle/binlogreplication"
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"
@@ -2149,17 +2147,3 @@ func RunBranchActivityTests(t *testing.T, harness DoltEnginetestHarness) {
})
}
}
func RunBinlogTests(t *testing.T, harness DoltEnginetestHarness) {
engine, err := harness.NewEngine(t)
require.NoError(t, err)
binlogConsumer := binlogreplication.DoltBinlogConsumer
binlogConsumer.SetEngine(engine.(*gms.Engine))
engine.EngineAnalyzer().Catalog.BinlogConsumer = binlogConsumer
for _, script := range BinlogScripts {
t.Run(script.Name, func(t *testing.T) {
enginetest.TestScript(t, harness, script)
})
}
}
@@ -139,7 +139,7 @@ func newDoltHarness(t *testing.T) *DoltHarness {
return dh
}
func newDoltEnginetestHarness(t *testing.T) DoltEnginetestHarness {
func NewDoltEnginetestHarness(t *testing.T) DoltEnginetestHarness {
return newDoltHarness(t)
}
@@ -1,17 +0,0 @@
BINLOG '
deQIaQ8BAAAA/AAAAAABAAAAAAQAMTAuMTEuMTMtTWFyaWFEQi0wdWJ1bnR1MC4yNC4wNC4xLWxv
ZwAAAAAAAAAAAAAAAAB15AhpEzgNAAgAEgAEBAQEEgAA5AAEGggAAAAICAgCAAAACgoKAAAAAAAA
CgoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAEEwQADQgICAoKCgHrNTca
'/*!*/;
BINLOG '
duQIaRMBAAAANgAAANEDAAAAABIAAAAAAAEABG15ZGIABXVzZXJzAAMDDw8EMgBkAAYbZRVQ
duQIaRcBAAAAPgAAAA8EAAAAABIAAAAAAAEAAwf4AQAAAAVBbGljZRFhbGljZUBleGFtcGxlLmNv
bYF4PKk=
'/*!*/;
BINLOG '
duQIaRMBAAAANgAAANsEAAAAABIAAAAAAAEABG15ZGIABXVzZXJzAAMDDw8EMgBkAAZzw5IK
duQIaRcBAAAAOgAAABUFAAAAABIAAAAAAAEAAwf4AgAAAANCb2IPYm9iQGV4YW1wbGUuY29tAEx8
Hw==
'/*!*/;
@@ -1,5 +0,0 @@
BINLOG '
d+QIaRMBAAAANgAAAAkCAAAAABIAAAAAAAEABG15ZGIABXVzZXJzAAMDDw8EMgBkAAZjxE4L
d+QIaRcBAAAAPAAAAEUCAAAAABIAAAAAAAEAAwf4ZAAAAARUZXN0EHRlc3RAZXhhbXBsZS5jb21i
G2QH
'/*!*/;
@@ -1,33 +0,0 @@
BINLOG '
d+QIaQ8BAAAA/AAAAAABAAAAAAQAMTAuMTEuMTMtTWFyaWFEQi0wdWJ1bnR1MC4yNC4wNC4xLWxv
ZwAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAA5AAEGggAAAAICAgCAAAACgoKAAAAAAAA
CgoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAEEwQADQgICAoKCgE13ZHp
'/*!*/;
BINLOG '
d+QIaRMBAAAAQAAAAA8EAAAAABYAAAAAAAEABG15ZGIADW11bHRpX29wX3Rlc3QABAMP9hEFZAAK
AgAOeYny2Q==
d+QIaRcBAAAANQAAAEQEAAAAABYAAAAAAAEABA/wAQAAAAVJdGVtMYAAAGNjaQjkd4F5Dtg=
'/*!*/;
BINLOG '
d+QIaRMBAAAAQAAAANsEAAAAABYAAAAAAAEABG15ZGIADW11bHRpX29wX3Rlc3QABAMP9hEFZAAK
AgAOBOGI0A==
d+QIaRcBAAAANQAAABAFAAAAABYAAAAAAAEABA/wAgAAAAVJdGVtMoAAAJUyaQjkd6Xwv3M=
'/*!*/;
BINLOG '
d+QIaRMBAAAAQAAAAKYFAAAAABYAAAAAAAEABG15ZGIADW11bHRpX29wX3Rlc3QABAMP9hEFZAAK
AgAO5lJ/og==
d+QIaRcBAAAANQAAANsFAAAAABYAAAAAAAEABA/wAwAAAAVJdGVtM4AAAEsZaQjkd0880pU=
'/*!*/;
BINLOG '
d+QIaRMBAAAAQAAAAGwGAAAAABYAAAAAAAEABG15ZGIADW11bHRpX29wX3Rlc3QABAMP9hEFZAAK
AgAOjlU3Ww==
d+QIaRgBAAAAcgAAAN4GAAAAABYAAAAAAAEABA8P8AEAAAAFSXRlbTGAAABjY2kI5HfwAQAAAAVJ
dGVtMYAAAG1jaQjkd/ACAAAABUl0ZW0ygAAAlTJpCOR38AIAAAAFSXRlbTKAAACkLWkI5HfR5l/q
'/*!*/;
BINLOG '
d+QIaRMBAAAAQAAAAFsHAAAAABYAAAAAAAEABG15ZGIADW11bHRpX29wX3Rlc3QABAMP9hEFZAAK
AgAOWAOOgg==
d+QIaRkBAAAANQAAAJAHAAAAABYAAAAAAAEABA/wAwAAAAVJdGVtM4AAAEsZaQjkdzH2SJU=
'/*!*/;
@@ -9,5 +9,8 @@ dolt config --global --add user.email mysql-test-runner@liquidata.co
echo "Running mysql-client-tests:"
bats /build/bin/bats/mysql-client-tests.bats
# We run mariadb-binlog integration in this suite same as with mysqldump in mysql-client-tests.bats.
# However, there's a bit more setup necessary to pipe the output from the dump in a mariadb client, so it's been
# separated into a separate bats.
echo "Running mariadb-binlog tests:"
bats /build/bin/bats/mariadb-binlog.bats