drizzle-kit 0.30.2-471d797 → 0.30.2-88fe396

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. package/api.js +633 -337
  2. package/api.mjs +633 -337
  3. package/bin.cjs +238 -37
  4. package/package.json +1 -1
package/bin.cjs CHANGED
@@ -24024,7 +24024,7 @@ function fromJson(statements, dialect6, action, json2) {
24024
24024
  }).filter((it) => it !== "");
24025
24025
  return result;
24026
24026
  }
24027
- var parseType, Convertor, PgCreateRoleConvertor, PgDropRoleConvertor, PgRenameRoleConvertor, PgAlterRoleConvertor, PgCreatePolicyConvertor, PgDropPolicyConvertor, PgRenamePolicyConvertor, PgAlterPolicyConvertor, PgCreateIndPolicyConvertor, PgDropIndPolicyConvertor, PgRenameIndPolicyConvertor, PgAlterIndPolicyConvertor, PgEnableRlsConvertor, PgDisableRlsConvertor, PgCreateTableConvertor, MySqlCreateTableConvertor, SingleStoreCreateTableConvertor, SQLiteCreateTableConvertor, PgCreateViewConvertor, MySqlCreateViewConvertor, SqliteCreateViewConvertor, PgDropViewConvertor, MySqlDropViewConvertor, SqliteDropViewConvertor, MySqlAlterViewConvertor, PgRenameViewConvertor, MySqlRenameViewConvertor, PgAlterViewSchemaConvertor, PgAlterViewAddWithOptionConvertor, PgAlterViewDropWithOptionConvertor, PgAlterViewAlterTablespaceConvertor, PgAlterViewAlterUsingConvertor, PgAlterTableAlterColumnSetGenerated, PgAlterTableAlterColumnDropGenerated, PgAlterTableAlterColumnAlterGenerated, PgAlterTableAddUniqueConstraintConvertor, PgAlterTableDropUniqueConstraintConvertor, PgAlterTableAddCheckConstraintConvertor, PgAlterTableDeleteCheckConstraintConvertor, MySQLAlterTableAddUniqueConstraintConvertor, MySQLAlterTableDropUniqueConstraintConvertor, MySqlAlterTableAddCheckConstraintConvertor, SingleStoreAlterTableAddUniqueConstraintConvertor, SingleStoreAlterTableDropUniqueConstraintConvertor, MySqlAlterTableDeleteCheckConstraintConvertor, CreatePgSequenceConvertor, DropPgSequenceConvertor, RenamePgSequenceConvertor, MovePgSequenceConvertor, AlterPgSequenceConvertor, CreateTypeEnumConvertor, DropTypeEnumConvertor, AlterTypeAddValueConvertor, AlterTypeSetSchemaConvertor, AlterRenameTypeConvertor, AlterTypeDropValueConvertor, PgDropTableConvertor, MySQLDropTableConvertor, SingleStoreDropTableConvertor, SQLiteDropTableConvertor, PgRenameTableConvertor, SqliteRenameTableConvertor, MySqlRenameTableConvertor, SingleStoreRenameTableConvertor, PgAlterTableRenameColumnConvertor, MySqlAlterTableRenameColumnConvertor, SingleStoreAlterTableRenameColumnConvertor, SQLiteAlterTableRenameColumnConvertor, PgAlterTableDropColumnConvertor, MySqlAlterTableDropColumnConvertor, SingleStoreAlterTableDropColumnConvertor, SQLiteAlterTableDropColumnConvertor, PgAlterTableAddColumnConvertor, MySqlAlterTableAddColumnConvertor, SingleStoreAlterTableAddColumnConvertor, SQLiteAlterTableAddColumnConvertor, PgAlterTableAlterColumnSetTypeConvertor, PgAlterTableAlterColumnSetDefaultConvertor, PgAlterTableAlterColumnDropDefaultConvertor, PgAlterTableAlterColumnDropGeneratedConvertor, PgAlterTableAlterColumnSetExpressionConvertor, PgAlterTableAlterColumnAlterrGeneratedConvertor, SqliteAlterTableAlterColumnDropGeneratedConvertor, SqliteAlterTableAlterColumnSetExpressionConvertor, SqliteAlterTableAlterColumnAlterGeneratedConvertor, MySqlAlterTableAlterColumnAlterrGeneratedConvertor, MySqlAlterTableAddPk, MySqlAlterTableDropPk, LibSQLModifyColumn, MySqlModifyColumn, SingleStoreAlterTableAlterColumnAlterrGeneratedConvertor, SingleStoreAlterTableAddPk, SingleStoreAlterTableDropPk, SingleStoreModifyColumn, PgAlterTableCreateCompositePrimaryKeyConvertor, PgAlterTableDeleteCompositePrimaryKeyConvertor, PgAlterTableAlterCompositePrimaryKeyConvertor, MySqlAlterTableCreateCompositePrimaryKeyConvertor, MySqlAlterTableDeleteCompositePrimaryKeyConvertor, MySqlAlterTableAlterCompositePrimaryKeyConvertor, PgAlterTableAlterColumnSetPrimaryKeyConvertor, PgAlterTableAlterColumnDropPrimaryKeyConvertor, PgAlterTableAlterColumnSetNotNullConvertor, PgAlterTableAlterColumnDropNotNullConvertor, PgCreateForeignKeyConvertor, LibSQLCreateForeignKeyConvertor, MySqlCreateForeignKeyConvertor, PgAlterForeignKeyConvertor, PgDeleteForeignKeyConvertor, MySqlDeleteForeignKeyConvertor, CreatePgIndexConvertor, CreateMySqlIndexConvertor, CreateSingleStoreIndexConvertor, CreateSqliteIndexConvertor, PgDropIndexConvertor, PgCreateSchemaConvertor, PgRenameSchemaConvertor, PgDropSchemaConvertor, PgAlterTableSetSchemaConvertor, PgAlterTableSetNewSchemaConvertor, PgAlterTableRemoveFromSchemaConvertor, SqliteDropIndexConvertor, MySqlDropIndexConvertor, SingleStoreDropIndexConvertor, SQLiteRecreateTableConvertor, LibSQLRecreateTableConvertor, convertors;
24027
+ var parseType, Convertor, PgCreateRoleConvertor, PgDropRoleConvertor, PgRenameRoleConvertor, PgAlterRoleConvertor, PgCreatePolicyConvertor, PgDropPolicyConvertor, PgRenamePolicyConvertor, PgAlterPolicyConvertor, PgCreateIndPolicyConvertor, PgDropIndPolicyConvertor, PgRenameIndPolicyConvertor, PgAlterIndPolicyConvertor, PgEnableRlsConvertor, PgDisableRlsConvertor, PgCreateTableConvertor, MySqlCreateTableConvertor, SingleStoreCreateTableConvertor, SQLiteCreateTableConvertor, PgCreateViewConvertor, MySqlCreateViewConvertor, SqliteCreateViewConvertor, PgDropViewConvertor, MySqlDropViewConvertor, SqliteDropViewConvertor, MySqlAlterViewConvertor, PgRenameViewConvertor, MySqlRenameViewConvertor, PgAlterViewSchemaConvertor, PgAlterViewAddWithOptionConvertor, PgAlterViewDropWithOptionConvertor, PgAlterViewAlterTablespaceConvertor, PgAlterViewAlterUsingConvertor, PgAlterTableAlterColumnSetGenerated, PgAlterTableAlterColumnDropGenerated, PgAlterTableAlterColumnAlterGenerated, PgAlterTableAddUniqueConstraintConvertor, PgAlterTableDropUniqueConstraintConvertor, PgAlterTableAddCheckConstraintConvertor, PgAlterTableDeleteCheckConstraintConvertor, MySQLAlterTableAddUniqueConstraintConvertor, MySQLAlterTableDropUniqueConstraintConvertor, MySqlAlterTableAddCheckConstraintConvertor, SingleStoreAlterTableAddUniqueConstraintConvertor, SingleStoreAlterTableDropUniqueConstraintConvertor, MySqlAlterTableDeleteCheckConstraintConvertor, CreatePgSequenceConvertor, DropPgSequenceConvertor, RenamePgSequenceConvertor, MovePgSequenceConvertor, AlterPgSequenceConvertor, CreateTypeEnumConvertor, DropTypeEnumConvertor, AlterTypeAddValueConvertor, AlterTypeSetSchemaConvertor, AlterRenameTypeConvertor, AlterTypeDropValueConvertor, PgDropTableConvertor, MySQLDropTableConvertor, SingleStoreDropTableConvertor, SQLiteDropTableConvertor, PgRenameTableConvertor, SqliteRenameTableConvertor, MySqlRenameTableConvertor, SingleStoreRenameTableConvertor, PgAlterTableRenameColumnConvertor, MySqlAlterTableRenameColumnConvertor, SingleStoreAlterTableRenameColumnConvertor, SQLiteAlterTableRenameColumnConvertor, PgAlterTableDropColumnConvertor, MySqlAlterTableDropColumnConvertor, SingleStoreAlterTableDropColumnConvertor, SQLiteAlterTableDropColumnConvertor, PgAlterTableAddColumnConvertor, MySqlAlterTableAddColumnConvertor, SingleStoreAlterTableAddColumnConvertor, SQLiteAlterTableAddColumnConvertor, PgAlterTableAlterColumnSetTypeConvertor, PgAlterTableAlterColumnSetDefaultConvertor, PgAlterTableAlterColumnDropDefaultConvertor, PgAlterTableAlterColumnDropGeneratedConvertor, PgAlterTableAlterColumnSetExpressionConvertor, PgAlterTableAlterColumnAlterrGeneratedConvertor, SqliteAlterTableAlterColumnDropGeneratedConvertor, SqliteAlterTableAlterColumnSetExpressionConvertor, SqliteAlterTableAlterColumnAlterGeneratedConvertor, MySqlAlterTableAlterColumnAlterrGeneratedConvertor, MySqlAlterTableAddPk, MySqlAlterTableDropPk, LibSQLModifyColumn, MySqlModifyColumn, SingleStoreAlterTableAlterColumnAlterrGeneratedConvertor, SingleStoreAlterTableAddPk, SingleStoreAlterTableDropPk, SingleStoreModifyColumn, PgAlterTableCreateCompositePrimaryKeyConvertor, PgAlterTableDeleteCompositePrimaryKeyConvertor, PgAlterTableAlterCompositePrimaryKeyConvertor, MySqlAlterTableCreateCompositePrimaryKeyConvertor, MySqlAlterTableDeleteCompositePrimaryKeyConvertor, MySqlAlterTableAlterCompositePrimaryKeyConvertor, PgAlterTableAlterColumnSetPrimaryKeyConvertor, PgAlterTableAlterColumnDropPrimaryKeyConvertor, PgAlterTableAlterColumnSetNotNullConvertor, PgAlterTableAlterColumnDropNotNullConvertor, PgCreateForeignKeyConvertor, LibSQLCreateForeignKeyConvertor, MySqlCreateForeignKeyConvertor, PgAlterForeignKeyConvertor, PgDeleteForeignKeyConvertor, MySqlDeleteForeignKeyConvertor, CreatePgIndexConvertor, CreateMySqlIndexConvertor, CreateSingleStoreIndexConvertor, CreateSqliteIndexConvertor, PgDropIndexConvertor, PgCreateSchemaConvertor, PgRenameSchemaConvertor, PgDropSchemaConvertor, PgAlterTableSetSchemaConvertor, PgAlterTableSetNewSchemaConvertor, PgAlterTableRemoveFromSchemaConvertor, SqliteDropIndexConvertor, MySqlDropIndexConvertor, SingleStoreDropIndexConvertor, SQLiteRecreateTableConvertor, LibSQLRecreateTableConvertor, SingleStoreRecreateTableConvertor, convertors;
24028
24028
  var init_sqlgenerator = __esm({
24029
24029
  "src/sqlgenerator.ts"() {
24030
24030
  "use strict";
@@ -24375,7 +24375,7 @@ var init_sqlgenerator = __esm({
24375
24375
  if (typeof compositePKs !== "undefined" && compositePKs.length > 0) {
24376
24376
  statement += ",\n";
24377
24377
  const compositePK5 = SingleStoreSquasher.unsquashPK(compositePKs[0]);
24378
- statement += ` CONSTRAINT \`${st.compositePkName}\` PRIMARY KEY(\`${compositePK5.columns.join(`\`,\``)}\`)`;
24378
+ statement += ` CONSTRAINT \`${compositePK5.name}\` PRIMARY KEY(\`${compositePK5.columns.join(`\`,\``)}\`)`;
24379
24379
  }
24380
24380
  if (typeof uniqueConstraints !== "undefined" && uniqueConstraints.length > 0) {
24381
24381
  for (const uniqueConstraint5 of uniqueConstraints) {
@@ -25035,7 +25035,7 @@ WITH ${withCheckOption} CHECK OPTION` : "";
25035
25035
  }
25036
25036
  convert(statement) {
25037
25037
  const { tableNameFrom, tableNameTo } = statement;
25038
- return `RENAME TABLE \`${tableNameFrom}\` TO \`${tableNameTo}\`;`;
25038
+ return `ALTER TABLE \`${tableNameFrom}\` RENAME TO \`${tableNameTo}\`;`;
25039
25039
  }
25040
25040
  };
25041
25041
  PgAlterTableRenameColumnConvertor = class extends Convertor {
@@ -25063,7 +25063,7 @@ WITH ${withCheckOption} CHECK OPTION` : "";
25063
25063
  }
25064
25064
  convert(statement) {
25065
25065
  const { tableName, oldColumnName, newColumnName } = statement;
25066
- return `ALTER TABLE \`${tableName}\` RENAME COLUMN \`${oldColumnName}\` TO \`${newColumnName}\`;`;
25066
+ return `ALTER TABLE \`${tableName}\` CHANGE \`${oldColumnName}\` \`${newColumnName}\`;`;
25067
25067
  }
25068
25068
  };
25069
25069
  SQLiteAlterTableRenameColumnConvertor = class extends Convertor {
@@ -26378,10 +26378,52 @@ ${BREAKPOINT}ALTER TABLE ${tableNameWithSchema} ADD CONSTRAINT "${statement.newC
26378
26378
  return sqlStatements;
26379
26379
  }
26380
26380
  };
26381
+ SingleStoreRecreateTableConvertor = class extends Convertor {
26382
+ can(statement, dialect6) {
26383
+ return statement.type === "singlestore_recreate_table" && dialect6 === "singlestore";
26384
+ }
26385
+ convert(statement) {
26386
+ const { tableName, columns, compositePKs, uniqueConstraints } = statement;
26387
+ const columnNames = columns.map((it) => `\`${it.name}\``).join(", ");
26388
+ const newTableName = `__new_${tableName}`;
26389
+ const sqlStatements = [];
26390
+ sqlStatements.push(
26391
+ new SingleStoreCreateTableConvertor().convert({
26392
+ type: "create_table",
26393
+ tableName: newTableName,
26394
+ columns,
26395
+ compositePKs,
26396
+ uniqueConstraints,
26397
+ schema: ""
26398
+ })
26399
+ );
26400
+ sqlStatements.push(
26401
+ `INSERT INTO \`${newTableName}\`(${columnNames}) SELECT ${columnNames} FROM \`${tableName}\`;`
26402
+ );
26403
+ sqlStatements.push(
26404
+ new SingleStoreDropTableConvertor().convert({
26405
+ type: "drop_table",
26406
+ tableName,
26407
+ schema: ""
26408
+ })
26409
+ );
26410
+ sqlStatements.push(
26411
+ new SingleStoreRenameTableConvertor().convert({
26412
+ fromSchema: "",
26413
+ tableNameFrom: newTableName,
26414
+ tableNameTo: tableName,
26415
+ toSchema: "",
26416
+ type: "rename_table"
26417
+ })
26418
+ );
26419
+ return sqlStatements;
26420
+ }
26421
+ };
26381
26422
  convertors = [];
26382
26423
  convertors.push(new PgCreateTableConvertor());
26383
26424
  convertors.push(new MySqlCreateTableConvertor());
26384
26425
  convertors.push(new SingleStoreCreateTableConvertor());
26426
+ convertors.push(new SingleStoreRecreateTableConvertor());
26385
26427
  convertors.push(new SQLiteCreateTableConvertor());
26386
26428
  convertors.push(new SQLiteRecreateTableConvertor());
26387
26429
  convertors.push(new LibSQLRecreateTableConvertor());
@@ -28390,7 +28432,7 @@ var init_jsonStatements = __esm({
28390
28432
  });
28391
28433
 
28392
28434
  // src/statementCombiner.ts
28393
- var prepareLibSQLRecreateTable, prepareSQLiteRecreateTable, libSQLCombineStatements, sqliteCombineStatements;
28435
+ var prepareLibSQLRecreateTable, prepareSQLiteRecreateTable, libSQLCombineStatements, sqliteCombineStatements, prepareSingleStoreRecreateTable, singleStoreCombineStatements;
28394
28436
  var init_statementCombiner = __esm({
28395
28437
  "src/statementCombiner.ts"() {
28396
28438
  "use strict";
@@ -28669,6 +28711,101 @@ var init_statementCombiner = __esm({
28669
28711
  const rest = combinedStatements.filter((it) => it.type !== "rename_table" && it.type !== "alter_table_rename_column");
28670
28712
  return [...renamedTables, ...renamedColumns, ...rest];
28671
28713
  };
28714
+ prepareSingleStoreRecreateTable = (table5) => {
28715
+ const { name, columns, uniqueConstraints, indexes, compositePrimaryKeys } = table5;
28716
+ const composites = Object.values(compositePrimaryKeys);
28717
+ const statements = [
28718
+ {
28719
+ type: "singlestore_recreate_table",
28720
+ tableName: name,
28721
+ columns: Object.values(columns),
28722
+ compositePKs: composites,
28723
+ uniqueConstraints: Object.values(uniqueConstraints)
28724
+ }
28725
+ ];
28726
+ if (Object.keys(indexes).length) {
28727
+ statements.push(...prepareCreateIndexesJson(name, "", indexes));
28728
+ }
28729
+ return statements;
28730
+ };
28731
+ singleStoreCombineStatements = (statements, json2) => {
28732
+ const newStatements = {};
28733
+ for (const statement of statements) {
28734
+ if (statement.type === "alter_table_alter_column_set_type" || statement.type === "alter_table_alter_column_set_notnull" || statement.type === "alter_table_alter_column_drop_notnull" || statement.type === "alter_table_alter_column_drop_autoincrement" || statement.type === "alter_table_alter_column_set_autoincrement" || statement.type === "alter_table_alter_column_drop_pk" || statement.type === "alter_table_alter_column_set_pk" || statement.type === "create_composite_pk" || statement.type === "alter_composite_pk" || statement.type === "delete_composite_pk") {
28735
+ const tableName2 = statement.tableName;
28736
+ const statementsForTable2 = newStatements[tableName2];
28737
+ if (!statementsForTable2) {
28738
+ newStatements[tableName2] = prepareSingleStoreRecreateTable(json2.tables[tableName2]);
28739
+ continue;
28740
+ }
28741
+ if (!statementsForTable2.some(({ type }) => type === "recreate_table")) {
28742
+ const wasRename = statementsForTable2.some(
28743
+ ({ type }) => type === "rename_table" || type === "alter_table_rename_column"
28744
+ );
28745
+ const preparedStatements = prepareSingleStoreRecreateTable(json2.tables[tableName2]);
28746
+ if (wasRename) {
28747
+ newStatements[tableName2].push(...preparedStatements);
28748
+ } else {
28749
+ newStatements[tableName2] = preparedStatements;
28750
+ }
28751
+ continue;
28752
+ }
28753
+ continue;
28754
+ }
28755
+ if ((statement.type === "alter_table_alter_column_drop_default" || statement.type === "alter_table_alter_column_set_default") && statement.columnNotNull) {
28756
+ const tableName2 = statement.tableName;
28757
+ const statementsForTable2 = newStatements[tableName2];
28758
+ if (!statementsForTable2) {
28759
+ newStatements[tableName2] = prepareSingleStoreRecreateTable(json2.tables[tableName2]);
28760
+ continue;
28761
+ }
28762
+ if (!statementsForTable2.some(({ type }) => type === "recreate_table")) {
28763
+ const wasRename = statementsForTable2.some(({ type }) => type === "rename_table");
28764
+ const preparedStatements = prepareSingleStoreRecreateTable(json2.tables[tableName2]);
28765
+ if (wasRename) {
28766
+ newStatements[tableName2].push(...preparedStatements);
28767
+ } else {
28768
+ newStatements[tableName2] = preparedStatements;
28769
+ }
28770
+ continue;
28771
+ }
28772
+ continue;
28773
+ }
28774
+ if (statement.type === "alter_table_add_column" && statement.column.primaryKey) {
28775
+ const tableName2 = statement.tableName;
28776
+ const statementsForTable2 = newStatements[tableName2];
28777
+ if (!statementsForTable2) {
28778
+ newStatements[tableName2] = prepareSingleStoreRecreateTable(json2.tables[tableName2]);
28779
+ continue;
28780
+ }
28781
+ if (!statementsForTable2.some(({ type }) => type === "recreate_table")) {
28782
+ const wasRename = statementsForTable2.some(({ type }) => type === "rename_table");
28783
+ const preparedStatements = prepareSingleStoreRecreateTable(json2.tables[tableName2]);
28784
+ if (wasRename) {
28785
+ newStatements[tableName2].push(...preparedStatements);
28786
+ } else {
28787
+ newStatements[tableName2] = preparedStatements;
28788
+ }
28789
+ continue;
28790
+ }
28791
+ continue;
28792
+ }
28793
+ const tableName = statement.type === "rename_table" ? statement.tableNameTo : statement.tableName;
28794
+ const statementsForTable = newStatements[tableName];
28795
+ if (!statementsForTable) {
28796
+ newStatements[tableName] = [statement];
28797
+ continue;
28798
+ }
28799
+ if (!statementsForTable.some(({ type }) => type === "singlestore_recreate_table")) {
28800
+ newStatements[tableName].push(statement);
28801
+ }
28802
+ }
28803
+ const combinedStatements = Object.values(newStatements).flat();
28804
+ const renamedTables = combinedStatements.filter((it) => it.type === "rename_table");
28805
+ const renamedColumns = combinedStatements.filter((it) => it.type === "alter_table_rename_column");
28806
+ const rest = combinedStatements.filter((it) => it.type !== "rename_table" && it.type !== "alter_table_rename_column");
28807
+ return [...renamedTables, ...renamedColumns, ...rest];
28808
+ };
28672
28809
  }
28673
28810
  });
28674
28811
 
@@ -30578,7 +30715,7 @@ var init_snapshotsDiffer = __esm({
30578
30715
  return [tableKey2, tableValue];
30579
30716
  }
30580
30717
  );
30581
- const diffResult = applyJsonDiff(tablesPatchedSnap1, json2);
30718
+ const diffResult = applyJsonDiff(columnsPatchedSnap1, json2);
30582
30719
  const typedResult = diffResultSchemeSingleStore.parse(diffResult);
30583
30720
  const jsonStatements = [];
30584
30721
  const jsonCreateIndexesForCreatedTables = createdTables.map((it) => {
@@ -30742,7 +30879,8 @@ var init_snapshotsDiffer = __esm({
30742
30879
  jsonStatements.push(...jsonDropColumnsStatemets);
30743
30880
  jsonStatements.push(...jsonAddedCompositePKs);
30744
30881
  jsonStatements.push(...jsonAlteredUniqueConstraints);
30745
- const sqlStatements = fromJson(jsonStatements, "singlestore");
30882
+ const combinedJsonStatements = singleStoreCombineStatements(jsonStatements, json2);
30883
+ const sqlStatements = fromJson(combinedJsonStatements, "singlestore");
30746
30884
  const uniqueSqlStatements = [];
30747
30885
  sqlStatements.forEach((ss) => {
30748
30886
  if (!uniqueSqlStatements.includes(ss)) {
@@ -30754,7 +30892,7 @@ var init_snapshotsDiffer = __esm({
30754
30892
  });
30755
30893
  const _meta = prepareMigrationMeta([], rTables, rColumns);
30756
30894
  return {
30757
- statements: jsonStatements,
30895
+ statements: combinedJsonStatements,
30758
30896
  sqlStatements: uniqueSqlStatements,
30759
30897
  _meta
30760
30898
  };
@@ -65729,13 +65867,28 @@ var init_pgPushUtils = __esm({
65729
65867
  });
65730
65868
 
65731
65869
  // src/cli/commands/singlestorePushUtils.ts
65870
+ function findColumnTypeAlternations(columns1, columns2) {
65871
+ const changes = [];
65872
+ for (const key in columns1) {
65873
+ if (columns1.hasOwnProperty(key) && columns2.hasOwnProperty(key)) {
65874
+ const col1 = columns1[key];
65875
+ const col2 = columns2[key];
65876
+ if (col1.type !== col2.type) {
65877
+ changes.push(col2.name);
65878
+ }
65879
+ }
65880
+ }
65881
+ return changes;
65882
+ }
65732
65883
  var import_hanji8, filterStatements2, logSuggestionsAndReturn3;
65733
65884
  var init_singlestorePushUtils = __esm({
65734
65885
  "src/cli/commands/singlestorePushUtils.ts"() {
65735
65886
  "use strict";
65736
65887
  init_source();
65737
65888
  import_hanji8 = __toESM(require_hanji());
65889
+ init_sqlgenerator();
65738
65890
  init_singlestoreSchema();
65891
+ init_utils2();
65739
65892
  init_selector_ui();
65740
65893
  init_outputs();
65741
65894
  filterStatements2 = (statements, currentSchema, prevSchema) => {
@@ -65779,7 +65932,7 @@ var init_singlestorePushUtils = __esm({
65779
65932
  return true;
65780
65933
  });
65781
65934
  };
65782
- logSuggestionsAndReturn3 = async (db, statements, json2) => {
65935
+ logSuggestionsAndReturn3 = async (db, statements, json2, json1) => {
65783
65936
  let shouldAskForApprove = false;
65784
65937
  const statementsToExecute = [];
65785
65938
  const infoToPrint = [];
@@ -65960,6 +66113,71 @@ var init_singlestorePushUtils = __esm({
65960
66113
  shouldAskForApprove = true;
65961
66114
  }
65962
66115
  }
66116
+ } else if (statement.type === "singlestore_recreate_table") {
66117
+ const tableName = statement.tableName;
66118
+ const prevColumns = json1.tables[tableName].columns;
66119
+ const currentColumns = json2.tables[tableName].columns;
66120
+ const { removedColumns, addedColumns } = findAddedAndRemoved(
66121
+ Object.keys(prevColumns),
66122
+ Object.keys(currentColumns)
66123
+ );
66124
+ if (removedColumns.length) {
66125
+ for (const removedColumn of removedColumns) {
66126
+ const res = await db.query(
66127
+ `select count(\`${tableName}\`.\`${removedColumn}\`) as count from \`${tableName}\``
66128
+ );
66129
+ const count = Number(res[0].count);
66130
+ if (count > 0) {
66131
+ infoToPrint.push(
66132
+ `\xB7 You're about to delete ${source_default.underline(
66133
+ removedColumn
66134
+ )} column in ${tableName} table with ${count} items`
66135
+ );
66136
+ columnsToRemove.push(removedColumn);
66137
+ shouldAskForApprove = true;
66138
+ }
66139
+ }
66140
+ }
66141
+ if (addedColumns.length) {
66142
+ for (const addedColumn of addedColumns) {
66143
+ const [res] = await db.query(
66144
+ `select count(*) as count from \`${tableName}\``
66145
+ );
66146
+ const columnConf = json2.tables[tableName].columns[addedColumn];
66147
+ const count = Number(res.count);
66148
+ if (count > 0 && columnConf.notNull && !columnConf.default) {
66149
+ infoToPrint.push(
66150
+ `\xB7 You're about to add not-null ${source_default.underline(
66151
+ addedColumn
66152
+ )} column without default value to table, which contains ${count} items`
66153
+ );
66154
+ shouldAskForApprove = true;
66155
+ tablesToTruncate.push(tableName);
66156
+ statementsToExecute.push(`TRUNCATE TABLE \`${tableName}\`;`);
66157
+ }
66158
+ }
66159
+ }
66160
+ const columnWithChangedType = findColumnTypeAlternations(prevColumns, currentColumns);
66161
+ for (const column9 of columnWithChangedType) {
66162
+ const [res] = await db.query(
66163
+ `select count(*) as count from \`${tableName}\` WHERE \`${tableName}\`.\`${column9}\` IS NOT NULL;`
66164
+ );
66165
+ const count = Number(res.count);
66166
+ if (count > 0) {
66167
+ infoToPrint.push(
66168
+ `\xB7 You're about recreate ${source_default.underline(tableName)} table with data type changing for ${source_default.underline(
66169
+ column9
66170
+ )} column, which contains ${count} items`
66171
+ );
66172
+ shouldAskForApprove = true;
66173
+ tablesToTruncate.push(tableName);
66174
+ statementsToExecute.push(`TRUNCATE TABLE \`${tableName}\`;`);
66175
+ }
66176
+ }
66177
+ }
66178
+ const stmnt = fromJson([statement], "singlestore", "push");
66179
+ if (typeof stmnt !== "undefined") {
66180
+ statementsToExecute.push(...stmnt);
65963
66181
  }
65964
66182
  }
65965
66183
  return {
@@ -67810,30 +68028,16 @@ var init_push = __esm({
67810
68028
  } = await logSuggestionsAndReturn3(
67811
68029
  db,
67812
68030
  filteredStatements,
67813
- statements.validatedCur
68031
+ statements.validatedCur,
68032
+ statements.validatedPrev
67814
68033
  );
67815
- const filteredSqlStatements = fromJson(filteredStatements, "singlestore");
67816
- const uniqueSqlStatementsToExecute = [];
67817
- statementsToExecute.forEach((ss) => {
67818
- if (!uniqueSqlStatementsToExecute.includes(ss)) {
67819
- uniqueSqlStatementsToExecute.push(ss);
67820
- }
67821
- });
67822
- const uniqueFilteredSqlStatements = [];
67823
- filteredSqlStatements.forEach((ss) => {
67824
- if (!uniqueFilteredSqlStatements.includes(ss)) {
67825
- uniqueFilteredSqlStatements.push(ss);
67826
- }
67827
- });
67828
68034
  if (verbose) {
67829
68035
  console.log();
67830
68036
  console.log(
67831
68037
  withStyle.warning("You are about to execute current statements:")
67832
68038
  );
67833
68039
  console.log();
67834
- console.log(
67835
- [...uniqueSqlStatementsToExecute, ...uniqueFilteredSqlStatements].map((s2) => source_default.blue(s2)).join("\n")
67836
- );
68040
+ console.log(statementsToExecute.map((s2) => source_default.blue(s2)).join("\n"));
67837
68041
  console.log();
67838
68042
  }
67839
68043
  if (!force && strict) {
@@ -67868,12 +68072,9 @@ var init_push = __esm({
67868
68072
  process.exit(0);
67869
68073
  }
67870
68074
  }
67871
- for (const dStmnt of uniqueSqlStatementsToExecute) {
68075
+ for (const dStmnt of statementsToExecute) {
67872
68076
  await db.query(dStmnt);
67873
68077
  }
67874
- for (const statement of uniqueFilteredSqlStatements) {
67875
- await db.query(statement);
67876
- }
67877
68078
  if (filteredStatements.length > 0) {
67878
68079
  (0, import_hanji13.render)(`[${source_default.green("\u2713")}] Changes applied`);
67879
68080
  } else {
@@ -74509,7 +74710,7 @@ var init_studio2 = __esm({
74509
74710
  };
74510
74711
  prepareSingleStoreSchema = async (path4) => {
74511
74712
  const imports = prepareFilenames(path4);
74512
- const singlestoreSchema3 = {
74713
+ const singlestoreSchema2 = {
74513
74714
  public: {}
74514
74715
  };
74515
74716
  const relations4 = {};
@@ -74526,7 +74727,7 @@ var init_studio2 = __esm({
74526
74727
  i0values.forEach(([k, t2]) => {
74527
74728
  if ((0, import_drizzle_orm10.is)(t2, import_singlestore_core3.SingleStoreTable)) {
74528
74729
  const schema6 = (0, import_singlestore_core3.getTableConfig)(t2).schema || "public";
74529
- singlestoreSchema3[schema6][k] = t2;
74730
+ singlestoreSchema2[schema6][k] = t2;
74530
74731
  }
74531
74732
  if ((0, import_drizzle_orm10.is)(t2, import_drizzle_orm10.Relations)) {
74532
74733
  relations4[k] = t2;
@@ -74534,7 +74735,7 @@ var init_studio2 = __esm({
74534
74735
  });
74535
74736
  }
74536
74737
  unregister();
74537
- return { schema: singlestoreSchema3, relations: relations4, files };
74738
+ return { schema: singlestoreSchema2, relations: relations4, files };
74538
74739
  };
74539
74740
  getCustomDefaults = (schema6) => {
74540
74741
  const customDefaults = [];
@@ -74660,10 +74861,10 @@ var init_studio2 = __esm({
74660
74861
  schemaFiles
74661
74862
  };
74662
74863
  };
74663
- drizzleForSingleStore = async (credentials2, singlestoreSchema3, relations4, schemaFiles) => {
74864
+ drizzleForSingleStore = async (credentials2, singlestoreSchema2, relations4, schemaFiles) => {
74664
74865
  const { connectToSingleStore: connectToSingleStore2 } = await Promise.resolve().then(() => (init_connections(), connections_exports));
74665
74866
  const { proxy } = await connectToSingleStore2(credentials2);
74666
- const customDefaults = getCustomDefaults(singlestoreSchema3);
74867
+ const customDefaults = getCustomDefaults(singlestoreSchema2);
74667
74868
  let dbUrl;
74668
74869
  if ("url" in credentials2) {
74669
74870
  dbUrl = credentials2.url;
@@ -74676,7 +74877,7 @@ var init_studio2 = __esm({
74676
74877
  dialect: "singlestore",
74677
74878
  proxy,
74678
74879
  customDefaults,
74679
- schema: singlestoreSchema3,
74880
+ schema: singlestoreSchema2,
74680
74881
  relations: relations4,
74681
74882
  schemaFiles
74682
74883
  };
@@ -77382,7 +77583,7 @@ init_utils5();
77382
77583
  var version2 = async () => {
77383
77584
  const { npmVersion } = await ormCoreVersions();
77384
77585
  const ormVersion = npmVersion ? `drizzle-orm: v${npmVersion}` : "";
77385
- const envVersion = "0.30.2-471d797";
77586
+ const envVersion = "0.30.2-88fe396";
77386
77587
  const kitVersion = envVersion ? `v${envVersion}` : "--";
77387
77588
  const versions = `drizzle-kit: ${kitVersion}
77388
77589
  ${ormVersion}`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drizzle-kit",
3
- "version": "0.30.2-471d797",
3
+ "version": "0.30.2-88fe396",
4
4
  "homepage": "https://orm.drizzle.team",
5
5
  "keywords": [
6
6
  "drizzle",