mirror of
https://github.com/dolthub/dolt.git
synced 2025-12-30 16:12:39 -06:00
479 lines
13 KiB
JavaScript
479 lines
13 KiB
JavaScript
import { diffRowsMatcher, patchRowsMatcher } from "./matchers.js";
|
|
|
|
export const diffTests = [
|
|
{
|
|
q: "UPDATE test SET value=1 WHERE pk=0",
|
|
res: {
|
|
fieldCount: 0,
|
|
affectedRows: 1,
|
|
insertId: 0,
|
|
info: "#Rows matched: 1 Changed: 1 Warnings: 0",
|
|
serverStatus: 2,
|
|
warningStatus: 0,
|
|
changedRows: 1,
|
|
},
|
|
},
|
|
{
|
|
q: "DROP TABLE test_info",
|
|
res: {
|
|
fieldCount: 0,
|
|
affectedRows: 0,
|
|
insertId: 0,
|
|
info: "",
|
|
serverStatus: 2,
|
|
warningStatus: 0,
|
|
changedRows: 0,
|
|
},
|
|
},
|
|
{
|
|
q: "SELECT * FROM dolt_diff_summary(:fromRefName, :toRefName)",
|
|
p: { fromRefName: "HEAD", toRefName: "WORKING" },
|
|
res: [
|
|
{
|
|
from_table_name: "test_info",
|
|
to_table_name: "",
|
|
diff_type: "dropped",
|
|
data_change: 1,
|
|
schema_change: 1,
|
|
},
|
|
{
|
|
from_table_name: "",
|
|
to_table_name: "dolt_schemas",
|
|
diff_type: "added",
|
|
data_change: 1,
|
|
schema_change: 1,
|
|
},
|
|
{
|
|
from_table_name: "test",
|
|
to_table_name: "test",
|
|
diff_type: "modified",
|
|
data_change: 1,
|
|
schema_change: 0,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
q: "SELECT * FROM dolt_diff_summary(:fromRefName, :toRefName, :tableName)",
|
|
p: { fromRefName: "HEAD", toRefName: "WORKING", tableName: "test" },
|
|
res: [
|
|
{
|
|
from_table_name: "test",
|
|
to_table_name: "test",
|
|
diff_type: "modified",
|
|
data_change: 1,
|
|
schema_change: 0,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
q: "SELECT * FROM dolt_diff_stat(:fromRefName, :toRefName)",
|
|
p: { fromRefName: "HEAD", toRefName: "WORKING" },
|
|
res: [
|
|
{
|
|
table_name: "dolt_schemas",
|
|
rows_unmodified: 0,
|
|
rows_added: 1,
|
|
rows_deleted: 0,
|
|
rows_modified: 0,
|
|
cells_added: 5,
|
|
cells_deleted: 0,
|
|
cells_modified: 0,
|
|
old_row_count: 0,
|
|
new_row_count: 1,
|
|
old_cell_count: 0,
|
|
new_cell_count: 5,
|
|
},
|
|
{
|
|
table_name: "test",
|
|
rows_unmodified: 2,
|
|
rows_added: 0,
|
|
rows_deleted: 0,
|
|
rows_modified: 1,
|
|
cells_added: 0,
|
|
cells_deleted: 0,
|
|
cells_modified: 1,
|
|
old_row_count: 3,
|
|
new_row_count: 3,
|
|
old_cell_count: 6,
|
|
new_cell_count: 6,
|
|
},
|
|
{
|
|
table_name: "test_info",
|
|
rows_unmodified: 0,
|
|
rows_added: 0,
|
|
rows_deleted: 1,
|
|
rows_modified: 0,
|
|
cells_added: 0,
|
|
cells_deleted: 3,
|
|
cells_modified: 0,
|
|
old_row_count: 1,
|
|
new_row_count: 0,
|
|
old_cell_count: 3,
|
|
new_cell_count: 0,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
q: "SELECT * FROM dolt_diff_stat(:fromRefName, :toRefName, :tableName)",
|
|
p: { fromRefName: "HEAD", toRefName: "WORKING", tableName: "test_info" },
|
|
res: [
|
|
{
|
|
table_name: "test_info",
|
|
rows_unmodified: 0,
|
|
rows_added: 0,
|
|
rows_deleted: 1,
|
|
rows_modified: 0,
|
|
cells_added: 0,
|
|
cells_deleted: 3,
|
|
cells_modified: 0,
|
|
old_row_count: 1,
|
|
new_row_count: 0,
|
|
old_cell_count: 3,
|
|
new_cell_count: 0,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
q: "SELECT * FROM DOLT_DIFF(:fromCommitId, :toCommitId, :tableName) ORDER BY to_pk ASC, from_pk ASC LIMIT :limit OFFSET :offset",
|
|
p: {
|
|
fromCommitId: "HEAD",
|
|
toCommitId: "WORKING",
|
|
tableName: "test",
|
|
limit: 10,
|
|
offset: 0,
|
|
},
|
|
res: [
|
|
{
|
|
to_pk: 0,
|
|
to_value: 1,
|
|
to_commit: "WORKING",
|
|
to_commit_date: "2023-03-09T07:44:47.670Z",
|
|
from_pk: 0,
|
|
from_value: 0,
|
|
from_commit: "HEAD",
|
|
from_commit_date: "2023-03-09T07:44:47.488Z",
|
|
diff_type: "modified",
|
|
},
|
|
],
|
|
matcher: diffRowsMatcher,
|
|
},
|
|
{
|
|
q: "SELECT * FROM DOLT_DIFF(:fromCommitId, :toCommitId, :tableName) ORDER BY to_id ASC, from_id ASC LIMIT :limit OFFSET :offset",
|
|
p: {
|
|
fromCommitId: "HEAD",
|
|
toCommitId: "WORKING",
|
|
tableName: "test_info",
|
|
limit: 10,
|
|
offset: 0,
|
|
},
|
|
res: [
|
|
{
|
|
to_id: null,
|
|
to_info: null,
|
|
to_test_pk: null,
|
|
to_commit: "WORKING",
|
|
to_commit_date: "2023-03-09T07:53:48.614Z",
|
|
from_id: 1,
|
|
from_info: "info about test pk 0",
|
|
from_test_pk: 0,
|
|
from_commit: "HEAD",
|
|
from_commit_date: "2023-03-09T07:53:48.284Z",
|
|
diff_type: "removed",
|
|
},
|
|
],
|
|
matcher: diffRowsMatcher,
|
|
},
|
|
{
|
|
q: "SELECT * FROM DOLT_DIFF(:fromCommitId, :toCommitId, :tableName) ORDER BY to_name ASC, from_name ASC LIMIT :limit OFFSET :offset",
|
|
p: {
|
|
fromCommitId: "HEAD",
|
|
toCommitId: "WORKING",
|
|
tableName: "dolt_schemas",
|
|
limit: 10,
|
|
offset: 0,
|
|
},
|
|
res: [
|
|
{
|
|
to_type: "view",
|
|
to_name: "myview",
|
|
to_fragment: "CREATE VIEW `myview` AS SELECT * FROM test",
|
|
to_extra: { CreatedAt: 0 },
|
|
to_sql_mode:
|
|
"NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES",
|
|
to_commit: "WORKING",
|
|
to_commit_date: "2023-03-09T07:56:29.035Z",
|
|
from_type: null,
|
|
from_name: null,
|
|
from_fragment: null,
|
|
from_extra: null,
|
|
from_sql_mode: null,
|
|
from_commit: "HEAD",
|
|
from_commit_date: "2023-03-09T07:56:28.841Z",
|
|
diff_type: "added",
|
|
},
|
|
],
|
|
matcher: diffRowsMatcher,
|
|
},
|
|
{
|
|
q: "SELECT * FROM DOLT_PATCH(:fromRefName, :toRefName) WHERE diff_type = 'schema'",
|
|
p: { fromRefName: "HEAD", toRefName: "WORKING" },
|
|
res: [
|
|
{
|
|
statement_order: 1,
|
|
from_commit_hash: "",
|
|
to_commit_hash: "WORKING",
|
|
table_name: "test_info",
|
|
diff_type: "schema",
|
|
statement: "DROP TABLE `test_info`;",
|
|
},
|
|
{
|
|
statement_order: 2,
|
|
from_commit_hash: "",
|
|
to_commit_hash: "WORKING",
|
|
table_name: "dolt_schemas",
|
|
diff_type: "schema",
|
|
statement:
|
|
"CREATE TABLE `dolt_schemas` (\n" +
|
|
" `type` varchar(64) COLLATE utf8mb4_0900_ai_ci NOT NULL,\n" +
|
|
" `name` varchar(64) COLLATE utf8mb4_0900_ai_ci NOT NULL,\n" +
|
|
" `fragment` longtext,\n" +
|
|
" `extra` json,\n" +
|
|
" `sql_mode` varchar(256) COLLATE utf8mb4_0900_ai_ci,\n" +
|
|
" PRIMARY KEY (`type`,`name`)\n" +
|
|
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin;",
|
|
},
|
|
],
|
|
matcher: patchRowsMatcher,
|
|
},
|
|
{
|
|
q: "SELECT * FROM DOLT_PATCH(:fromRefName, :toRefName, :tableName) WHERE diff_type = 'schema'",
|
|
p: { fromRefName: "HEAD", toRefName: "WORKING", tableName: "test_info" },
|
|
res: [
|
|
{
|
|
statement_order: 1,
|
|
from_commit_hash: "",
|
|
to_commit_hash: "WORKING",
|
|
table_name: "test_info",
|
|
diff_type: "schema",
|
|
statement: "DROP TABLE `test_info`;",
|
|
},
|
|
],
|
|
matcher: patchRowsMatcher,
|
|
},
|
|
{
|
|
q: "SELECT * FROM DOLT_SCHEMA_DIFF(:fromRefName, :toRefName)",
|
|
p: { fromRefName: "HEAD", toRefName: "WORKING" },
|
|
res: [
|
|
{
|
|
from_table_name: "test_info",
|
|
to_table_name: "",
|
|
from_create_statement:
|
|
"CREATE TABLE `test_info` (\n" +
|
|
" `id` int NOT NULL,\n" +
|
|
" `info` varchar(255),\n" +
|
|
" `test_pk` int,\n" +
|
|
" PRIMARY KEY (`id`),\n" +
|
|
" KEY `test_pk` (`test_pk`),\n" +
|
|
" CONSTRAINT `test_info_ibfk_1` FOREIGN KEY (`test_pk`) REFERENCES `test` (`pk`)\n" +
|
|
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin;",
|
|
to_create_statement: "",
|
|
},
|
|
{
|
|
from_table_name: "",
|
|
to_table_name: "dolt_schemas",
|
|
from_create_statement: "",
|
|
to_create_statement:
|
|
"CREATE TABLE `dolt_schemas` (\n" +
|
|
" `type` varchar(64) COLLATE utf8mb4_0900_ai_ci NOT NULL,\n" +
|
|
" `name` varchar(64) COLLATE utf8mb4_0900_ai_ci NOT NULL,\n" +
|
|
" `fragment` longtext,\n" +
|
|
" `extra` json,\n" +
|
|
" `sql_mode` varchar(256) COLLATE utf8mb4_0900_ai_ci,\n" +
|
|
" PRIMARY KEY (`type`,`name`)\n" +
|
|
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin;",
|
|
},
|
|
],
|
|
},
|
|
{
|
|
q: "SELECT * FROM DOLT_SCHEMA_DIFF(:fromRefName, :toRefName, :tableName)",
|
|
p: { fromRefName: "HEAD", toRefName: "WORKING", tableName: "test_info" },
|
|
res: [
|
|
{
|
|
from_table_name: "test_info",
|
|
to_table_name: "",
|
|
from_create_statement:
|
|
"CREATE TABLE `test_info` (\n" +
|
|
" `id` int NOT NULL,\n" +
|
|
" `info` varchar(255),\n" +
|
|
" `test_pk` int,\n" +
|
|
" PRIMARY KEY (`id`),\n" +
|
|
" KEY `test_pk` (`test_pk`),\n" +
|
|
" CONSTRAINT `test_info_ibfk_1` FOREIGN KEY (`test_pk`) REFERENCES `test` (`pk`)\n" +
|
|
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin;",
|
|
to_create_statement: "",
|
|
},
|
|
],
|
|
},
|
|
{
|
|
q: `CALL DOLT_COMMIT("-A", "-m", :commitMsg)`,
|
|
p: { commitMsg: "Make some changes on branch" },
|
|
res: [{ hash: "" }],
|
|
},
|
|
|
|
// Three dot
|
|
{
|
|
q: "SELECT * FROM dolt_diff_summary(:refRange)",
|
|
p: { refRange: "main...HEAD" },
|
|
res: [
|
|
{
|
|
from_table_name: "test_info",
|
|
to_table_name: "",
|
|
diff_type: "dropped",
|
|
data_change: 1,
|
|
schema_change: 1,
|
|
},
|
|
{
|
|
from_table_name: "",
|
|
to_table_name: "dolt_schemas",
|
|
diff_type: "added",
|
|
data_change: 1,
|
|
schema_change: 1,
|
|
},
|
|
{
|
|
from_table_name: "test",
|
|
to_table_name: "test",
|
|
diff_type: "modified",
|
|
data_change: 1,
|
|
schema_change: 0,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
q: "SELECT * FROM dolt_diff_summary(:refRange, :tableName)",
|
|
p: { refRange: "main...HEAD", tableName: "test" },
|
|
res: [
|
|
{
|
|
from_table_name: "test",
|
|
to_table_name: "test",
|
|
diff_type: "modified",
|
|
data_change: 1,
|
|
schema_change: 0,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
q: "SELECT * FROM dolt_diff_stat(:refRange)",
|
|
p: { refRange: "main...HEAD" },
|
|
res: [
|
|
{
|
|
table_name: "dolt_schemas",
|
|
rows_unmodified: 0,
|
|
rows_added: 1,
|
|
rows_deleted: 0,
|
|
rows_modified: 0,
|
|
cells_added: 5,
|
|
cells_deleted: 0,
|
|
cells_modified: 0,
|
|
old_row_count: 0,
|
|
new_row_count: 1,
|
|
old_cell_count: 0,
|
|
new_cell_count: 5,
|
|
},
|
|
{
|
|
table_name: "test",
|
|
rows_unmodified: 2,
|
|
rows_added: 0,
|
|
rows_deleted: 0,
|
|
rows_modified: 1,
|
|
cells_added: 0,
|
|
cells_deleted: 0,
|
|
cells_modified: 1,
|
|
old_row_count: 3,
|
|
new_row_count: 3,
|
|
old_cell_count: 6,
|
|
new_cell_count: 6,
|
|
},
|
|
{
|
|
table_name: "test_info",
|
|
rows_unmodified: 0,
|
|
rows_added: 0,
|
|
rows_deleted: 1,
|
|
rows_modified: 0,
|
|
cells_added: 0,
|
|
cells_deleted: 3,
|
|
cells_modified: 0,
|
|
old_row_count: 1,
|
|
new_row_count: 0,
|
|
old_cell_count: 3,
|
|
new_cell_count: 0,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
q: "SELECT * FROM dolt_diff_stat(:refRange, :tableName)",
|
|
p: { refRange: "main...HEAD", tableName: "test_info" },
|
|
res: [
|
|
{
|
|
table_name: "test_info",
|
|
rows_unmodified: 0,
|
|
rows_added: 0,
|
|
rows_deleted: 1,
|
|
rows_modified: 0,
|
|
cells_added: 0,
|
|
cells_deleted: 3,
|
|
cells_modified: 0,
|
|
old_row_count: 1,
|
|
new_row_count: 0,
|
|
old_cell_count: 3,
|
|
new_cell_count: 0,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
q: "SELECT * FROM DOLT_PATCH(:refRange) WHERE diff_type = 'schema'",
|
|
p: { refRange: "main...HEAD" },
|
|
res: [
|
|
{
|
|
statement_order: 1,
|
|
from_commit_hash: "",
|
|
to_commit_hash: "",
|
|
table_name: "test_info",
|
|
diff_type: "schema",
|
|
statement: "DROP TABLE `test_info`;",
|
|
},
|
|
{
|
|
statement_order: 2,
|
|
from_commit_hash: "",
|
|
to_commit_hash: "",
|
|
table_name: "dolt_schemas",
|
|
diff_type: "schema",
|
|
statement:
|
|
"CREATE TABLE `dolt_schemas` (\n" +
|
|
" `type` varchar(64) COLLATE utf8mb4_0900_ai_ci NOT NULL,\n" +
|
|
" `name` varchar(64) COLLATE utf8mb4_0900_ai_ci NOT NULL,\n" +
|
|
" `fragment` longtext,\n" +
|
|
" `extra` json,\n" +
|
|
" `sql_mode` varchar(256) COLLATE utf8mb4_0900_ai_ci,\n" +
|
|
" PRIMARY KEY (`type`,`name`)\n" +
|
|
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin;",
|
|
},
|
|
],
|
|
matcher: patchRowsMatcher,
|
|
},
|
|
{
|
|
q: "SELECT * FROM DOLT_PATCH(:refRange, :tableName) WHERE diff_type = 'schema'",
|
|
p: { refRange: "main...HEAD", tableName: "test_info" },
|
|
res: [
|
|
{
|
|
statement_order: 1,
|
|
from_commit_hash: "",
|
|
to_commit_hash: "",
|
|
table_name: "test_info",
|
|
diff_type: "schema",
|
|
statement: "DROP TABLE `test_info`;",
|
|
},
|
|
],
|
|
matcher: patchRowsMatcher,
|
|
},
|
|
];
|