import { dbName } from "../helpers.js"; import { doltAddFields, doltCheckoutFields, doltCommitFields, doltDiffStatFields, doltResetFields, doltStatusFields, infoSchemaKeyColumnUsageFields, } from "../fields.js"; const testInfoFields = [ { name: "id", tableID: 0, columnID: 0, dataTypeID: 23, dataTypeSize: 4, dataTypeModifier: -1, format: "text", }, { name: "info", tableID: 0, columnID: 0, dataTypeID: 1043, dataTypeSize: 1020, dataTypeModifier: 259, format: "text", }, { name: "test_pk", tableID: 0, columnID: 0, dataTypeID: 23, dataTypeSize: 4, dataTypeModifier: -1, format: "text", }, ]; export const tableTests = [ { q: "SET search_path TO DEFAULT", res: { command: "SET", rowCount: null, oid: null, rows: [], fields: [], }, }, { q: "INSERT INTO test VALUES (0, 0), (1, 1), (2,2)", res: { command: "INSERT", rowCount: 3, oid: 0, rows: [], fields: [], }, }, { q: `CREATE UNIQUE INDEX test_idx ON test (pk, value)`, res: { command: "CREATE", rowCount: null, oid: null, rows: [], fields: [], }, }, { q: `SELECT ordinal_position, column_name, udt_name as data_type, is_nullable, column_default FROM information_schema.columns WHERE table_catalog=$1 AND table_schema = $2 AND table_name = $3;`, p: [`${dbName}/main`, "public", "test"], res: { command: "SELECT", rowCount: 2, oid: null, rows: [ { ordinal_position: 1, column_name: "pk", data_type: "int4", is_nullable: "NO", column_default: null, }, { ordinal_position: 2, column_name: "value", data_type: "int4", is_nullable: "YES", column_default: null, }, ], fields: [ { name: "ordinal_position", tableID: 0, columnID: 0, dataTypeID: 23, dataTypeSize: 4, dataTypeModifier: -1, format: "text", }, { name: "column_name", tableID: 0, columnID: 0, dataTypeID: 1043, dataTypeSize: 256, dataTypeModifier: 68, format: "text", }, { name: "data_type", tableID: 0, columnID: 0, dataTypeID: 1043, dataTypeSize: 256, dataTypeModifier: 68, format: "text", }, { name: "is_nullable", tableID: 0, columnID: 0, dataTypeID: 1043, dataTypeSize: 12, dataTypeModifier: 7, format: "text", }, { name: "column_default", tableID: 0, columnID: 0, dataTypeID: 25, dataTypeSize: -1, dataTypeModifier: -1, format: "text", }, ], }, }, { q: `SELECT DOLT_COMMIT('-A', '-m', $1::text)`, p: ["Add some rows and a column index"], res: { command: "SELECT", rowCount: 1, oid: null, rows: [{ dolt_commit: [""] }], fields: doltCommitFields, }, }, { skip: true, // TODO: ORDER BY is not yet supported q: `SELECT table_name, index_name, comment, non_unique, GROUP_CONCAT(column_name ORDER BY seq_in_index) AS COLUMNS FROM information_schema.statistics WHERE table_catalog=$1 AND table_schema=$2 AND table_name=$3 AND index_name!='PRIMARY' GROUP BY index_name;`, p: [`${dbName}/main`, "public", "test"], res: { command: "SELECT", rowCount: 1, oid: null, rows: [ { TABLE_NAME: "test", INDEX_NAME: "test_idx", COMMENT: "", NON_UNIQUE: 0, COLUMNS: "pk,value", }, ], }, }, { q: "CREATE TABLE test_info (id int, info varchar(255), test_pk int, primary key(id), foreign key (test_pk) references test(pk))", res: { command: "CREATE", rowCount: null, oid: null, rows: [], fields: [], }, }, { q: "INSERT INTO test_info VALUES (1, 'info about test pk 0', 0)", res: { command: "INSERT", rowCount: 1, oid: 0, rows: [], fields: [], }, }, { q: `SELECT DOLT_COMMIT('-A', '-m', $1::text)`, p: ["Add test_info with foreign key"], res: { command: "SELECT", rowCount: 1, oid: null, rows: [{ dolt_commit: [""] }], fields: doltCommitFields, }, }, { q: `SELECT "table_schema", "table_name" FROM "information_schema"."tables" WHERE "table_schema" = $1 AND "table_catalog" = $2;`, p: ["public", `${dbName}/main`], res: { command: "SELECT", rowCount: 2, oid: null, rows: [ { table_schema: "public", table_name: "test" }, { table_schema: "public", table_name: "test_info" }, ], fields: [ { name: "table_schema", tableID: 0, columnID: 0, dataTypeID: 1043, dataTypeSize: 256, dataTypeModifier: 68, format: "text", }, { name: "table_name", tableID: 0, columnID: 0, dataTypeID: 1043, dataTypeSize: 256, dataTypeModifier: 68, format: "text", }, ], }, }, { q: `SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE table_name=$1 AND table_schema=$2 AND table_catalog=$3 AND referenced_table_schema IS NOT NULL`, p: ["test_info", "public", `${dbName}/main`], res: { command: "SELECT", rowCount: 1, oid: null, rows: [ { CONSTRAINT_CATALOG: `${dbName}/main`, CONSTRAINT_SCHEMA: "public", CONSTRAINT_NAME: "test_info_test_pk_fkey", TABLE_CATALOG: `${dbName}/main`, TABLE_SCHEMA: "public", TABLE_NAME: "test_info", COLUMN_NAME: "test_pk", ORDINAL_POSITION: 1, POSITION_IN_UNIQUE_CONSTRAINT: 1, REFERENCED_TABLE_SCHEMA: `${dbName}/main`, REFERENCED_TABLE_NAME: "test", REFERENCED_COLUMN_NAME: "pk", }, ], fields: infoSchemaKeyColumnUsageFields, }, }, { q: `SELECT * FROM "public"."test_info" "public.test_info" ORDER BY id ASC LIMIT 10;`, res: { command: "SELECT", rowCount: 1, oid: null, rows: [{ id: 1, info: "info about test pk 0", test_pk: 0 }], fields: testInfoFields, }, }, { q: `USE '${dbName}/main'`, res: { command: "SET", rowCount: null, oid: null, rows: [], fields: [], }, }, // Copy from tests { q: `SELECT * FROM dolt.status`, res: { command: "SELECT", rowCount: 0, oid: null, rows: [], fields: doltStatusFields, }, }, { q: `COPY "test_info" FROM STDIN WITH (FORMAT csv, HEADER TRUE);`, file: "insert_test_info.csv", res: { command: "COPY", rowCount: 3, oid: null, rows: [], fields: [] }, }, { q: "SELECT * FROM test_info", res: { command: "SELECT", rowCount: 4, oid: null, rows: [ { id: 1, info: "info about test pk 0", test_pk: 0 }, { id: 4, info: "string for 4", test_pk: 1 }, { id: 5, info: "string for 5", test_pk: 0 }, { id: 6, info: "string for 6", test_pk: 0 }, ], fields: testInfoFields, }, }, { q: "SELECT * FROM dolt_diff_stat('HEAD', 'WORKING')", // TODO: Prepared not working res: { command: "SELECT", rowCount: 1, oid: null, rows: [ { table_name: "public.test_info", rows_unmodified: "1", rows_added: "3", rows_deleted: "0", rows_modified: "0", cells_added: "9", cells_deleted: "0", cells_modified: "0", old_row_count: "1", new_row_count: "4", old_cell_count: "3", new_cell_count: "12", }, ], fields: doltDiffStatFields, }, }, { q: `COPY "test_info" FROM STDIN WITH (FORMAT csv, HEADER TRUE, DELIMITER '|');`, file: "insert_test_info.psv", res: { command: "COPY", rowCount: 3, oid: null, rows: [], fields: [] }, }, { skip: true, q: "SELECT * FROM dolt_diff_stat('HEAD', 'WORKING')", res: { command: "SELECT", rowCount: 1, oid: null, rows: [ { table_name: "public.test_info", rows_unmodified: 0, rows_added: 3, rows_deleted: 0, rows_modified: 1, cells_added: 9, cells_deleted: 0, cells_modified: 1, old_row_count: 1, new_row_count: 4, old_cell_count: 3, new_cell_count: 12, }, ], fields: doltDiffStatFields, }, }, // Add and revert load data changes { q: `SELECT * FROM dolt.status`, res: { command: "SELECT", rowCount: 1, oid: null, rows: [ { table_name: "public.test_info", staged: false, status: "modified" }, ], fields: doltStatusFields, }, }, { q: "SELECT DOLT_ADD('.')", res: { command: "SELECT", rowCount: 1, oid: null, rows: [{ dolt_add: ["0"] }], fields: doltAddFields, }, }, { q: `SELECT * FROM dolt.status`, res: { command: "SELECT", rowCount: 1, oid: null, rows: [ { table_name: "public.test_info", staged: true, status: "modified" }, ], fields: doltStatusFields, }, }, { q: "SELECT DOLT_RESET('test_info');", res: { command: "SELECT", rowCount: 1, oid: null, rows: [{ dolt_reset: ["0"] }], fields: doltResetFields, }, }, { q: `SELECT * FROM dolt.status`, res: { command: "SELECT", rowCount: 1, oid: null, rows: [ { table_name: "public.test_info", staged: false, status: "modified" }, ], fields: doltStatusFields, }, }, { q: "SELECT DOLT_CHECKOUT('test_info')", res: { command: "SELECT", rowCount: 1, oid: null, rows: [{ dolt_checkout: ["0"] }], fields: doltCheckoutFields, }, }, { q: `SELECT * FROM dolt.status`, res: { command: "SELECT", rowCount: 0, oid: null, rows: [], fields: doltStatusFields, }, }, ];