Files
dolt/integration-tests/mysql-client-tests/node/workbenchTests/diffs.js
2024-04-12 11:08:23 -07:00

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,
},
];