knex 0.21.20 → 0.21.21
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.
- package/CHANGELOG.md +6 -0
- package/CONTRIBUTING.md +184 -184
- package/LICENSE +22 -22
- package/README.md +95 -95
- package/bin/cli.js +414 -414
- package/bin/utils/cli-config-utils.js +151 -151
- package/bin/utils/constants.js +7 -7
- package/bin/utils/migrationsLister.js +37 -37
- package/knex.js +8 -8
- package/lib/client.js +413 -413
- package/lib/config-resolver.js +61 -61
- package/lib/constants.js +44 -44
- package/lib/dialects/mssql/index.js +390 -390
- package/lib/dialects/mssql/query/compiler.js +444 -444
- package/lib/dialects/mssql/schema/columncompiler.js +103 -103
- package/lib/dialects/mssql/schema/compiler.js +59 -59
- package/lib/dialects/mssql/schema/tablecompiler.js +245 -245
- package/lib/dialects/mssql/transaction.js +97 -97
- package/lib/dialects/mysql/index.js +191 -191
- package/lib/dialects/mysql/query/compiler.js +142 -142
- package/lib/dialects/mysql/schema/columncompiler.js +171 -171
- package/lib/dialects/mysql/schema/compiler.js +60 -60
- package/lib/dialects/mysql/schema/tablecompiler.js +262 -262
- package/lib/dialects/mysql/transaction.js +48 -48
- package/lib/dialects/mysql2/index.js +35 -35
- package/lib/dialects/mysql2/transaction.js +46 -46
- package/lib/dialects/oracle/DEAD_CODE.md +5 -5
- package/lib/dialects/oracle/formatter.js +20 -20
- package/lib/dialects/oracle/index.js +79 -79
- package/lib/dialects/oracle/query/compiler.js +327 -327
- package/lib/dialects/oracle/schema/columnbuilder.js +18 -18
- package/lib/dialects/oracle/schema/columncompiler.js +139 -139
- package/lib/dialects/oracle/schema/compiler.js +81 -81
- package/lib/dialects/oracle/schema/tablecompiler.js +165 -165
- package/lib/dialects/oracle/schema/trigger.js +126 -126
- package/lib/dialects/oracle/utils.js +86 -86
- package/lib/dialects/oracledb/index.js +489 -489
- package/lib/dialects/oracledb/query/compiler.js +363 -363
- package/lib/dialects/oracledb/schema/columncompiler.js +35 -35
- package/lib/dialects/oracledb/transaction.js +76 -76
- package/lib/dialects/oracledb/utils.js +14 -14
- package/lib/dialects/postgres/index.js +319 -319
- package/lib/dialects/postgres/query/compiler.js +206 -206
- package/lib/dialects/postgres/schema/columncompiler.js +125 -125
- package/lib/dialects/postgres/schema/compiler.js +109 -109
- package/lib/dialects/postgres/schema/tablecompiler.js +183 -183
- package/lib/dialects/redshift/index.js +73 -73
- package/lib/dialects/redshift/query/compiler.js +119 -119
- package/lib/dialects/redshift/schema/columnbuilder.js +20 -20
- package/lib/dialects/redshift/schema/columncompiler.js +60 -60
- package/lib/dialects/redshift/schema/compiler.js +14 -14
- package/lib/dialects/redshift/schema/tablecompiler.js +123 -123
- package/lib/dialects/redshift/transaction.js +18 -18
- package/lib/dialects/sqlite3/formatter.js +21 -21
- package/lib/dialects/sqlite3/index.js +169 -169
- package/lib/dialects/sqlite3/query/compiler.js +222 -222
- package/lib/dialects/sqlite3/schema/columncompiler.js +27 -27
- package/lib/dialects/sqlite3/schema/compiler.js +49 -49
- package/lib/dialects/sqlite3/schema/ddl.js +525 -525
- package/lib/dialects/sqlite3/schema/tablecompiler.js +238 -238
- package/lib/formatter.js +295 -295
- package/lib/functionhelper.js +14 -14
- package/lib/helpers.js +92 -92
- package/lib/index.js +3 -3
- package/lib/interface.js +115 -115
- package/lib/knex.js +42 -42
- package/lib/logger.js +76 -76
- package/lib/migrate/MigrationGenerator.js +82 -82
- package/lib/migrate/Migrator.js +611 -611
- package/lib/migrate/configuration-merger.js +60 -60
- package/lib/migrate/migrate-stub.js +17 -17
- package/lib/migrate/migration-list-resolver.js +36 -36
- package/lib/migrate/sources/fs-migrations.js +99 -99
- package/lib/migrate/stub/cjs.stub +15 -15
- package/lib/migrate/stub/coffee.stub +13 -13
- package/lib/migrate/stub/eg.stub +14 -14
- package/lib/migrate/stub/js.stub +15 -15
- package/lib/migrate/stub/knexfile-coffee.stub +34 -34
- package/lib/migrate/stub/knexfile-eg.stub +43 -43
- package/lib/migrate/stub/knexfile-js.stub +44 -44
- package/lib/migrate/stub/knexfile-ls.stub +35 -35
- package/lib/migrate/stub/knexfile-ts.stub +44 -44
- package/lib/migrate/stub/ls.stub +14 -14
- package/lib/migrate/stub/ts.stub +21 -21
- package/lib/migrate/table-creator.js +67 -67
- package/lib/migrate/table-resolver.js +27 -27
- package/lib/query/builder.js +1372 -1372
- package/lib/query/compiler.js +889 -889
- package/lib/query/constants.js +13 -13
- package/lib/query/joinclause.js +263 -263
- package/lib/query/methods.js +92 -92
- package/lib/query/string.js +190 -190
- package/lib/raw.js +188 -188
- package/lib/ref.js +39 -39
- package/lib/runner.js +285 -285
- package/lib/schema/builder.js +82 -82
- package/lib/schema/columnbuilder.js +117 -117
- package/lib/schema/columncompiler.js +177 -177
- package/lib/schema/compiler.js +101 -101
- package/lib/schema/helpers.js +51 -51
- package/lib/schema/tablebuilder.js +288 -288
- package/lib/schema/tablecompiler.js +296 -296
- package/lib/seed/Seeder.js +203 -203
- package/lib/seed/seed-stub.js +13 -13
- package/lib/seed/stub/coffee.stub +9 -9
- package/lib/seed/stub/eg.stub +11 -11
- package/lib/seed/stub/js.stub +13 -13
- package/lib/seed/stub/ls.stub +11 -11
- package/lib/seed/stub/ts.stub +13 -13
- package/lib/transaction.js +363 -363
- package/lib/util/batchInsert.js +59 -59
- package/lib/util/delay.js +6 -6
- package/lib/util/fake-client.js +9 -9
- package/lib/util/finally-mixin.js +13 -13
- package/lib/util/fs.js +76 -76
- package/lib/util/import-file.js +13 -13
- package/lib/util/is-module-type.js +14 -14
- package/lib/util/is.js +32 -32
- package/lib/util/make-knex.js +338 -338
- package/lib/util/nanoid.js +29 -29
- package/lib/util/noop.js +1 -1
- package/lib/util/parse-connection.js +66 -66
- package/lib/util/save-async-stack.js +14 -14
- package/lib/util/template.js +52 -52
- package/lib/util/timeout.js +29 -29
- package/lib/util/timestamp.js +16 -16
- package/package.json +1 -1
- package/scripts/build.js +125 -125
- package/scripts/docker-compose.yml +111 -111
- package/scripts/next-release-howto.md +24 -24
- package/scripts/release.sh +34 -34
- package/scripts/runkit-example.js +34 -34
- package/scripts/stress-test/README.txt +18 -18
- package/scripts/stress-test/docker-compose.yml +47 -47
- package/scripts/stress-test/knex-stress-test.js +196 -196
- package/scripts/stress-test/mysql2-random-hanging-every-now-and-then.js +145 -145
- package/scripts/stress-test/mysql2-sudden-exit-without-error.js +100 -100
- package/scripts/stress-test/reconnect-test-mysql-based-drivers.js +184 -184
- package/types/index.d.ts +2249 -2249
- package/types/result.d.ts +27 -27
- package/types/tables.d.ts +4 -4
|
@@ -1,165 +1,165 @@
|
|
|
1
|
-
/* eslint max-len:0 */
|
|
2
|
-
|
|
3
|
-
const { inherits } = require('util');
|
|
4
|
-
const utils = require('../utils');
|
|
5
|
-
const TableCompiler = require('../../../schema/tablecompiler');
|
|
6
|
-
const helpers = require('../../../helpers');
|
|
7
|
-
const Trigger = require('./trigger');
|
|
8
|
-
|
|
9
|
-
// Table Compiler
|
|
10
|
-
// ------
|
|
11
|
-
|
|
12
|
-
function TableCompiler_Oracle() {
|
|
13
|
-
TableCompiler.apply(this, arguments);
|
|
14
|
-
}
|
|
15
|
-
inherits(TableCompiler_Oracle, TableCompiler);
|
|
16
|
-
|
|
17
|
-
Object.assign(TableCompiler_Oracle.prototype, {
|
|
18
|
-
addColumns(columns, prefix) {
|
|
19
|
-
if (columns.sql.length > 0) {
|
|
20
|
-
prefix = prefix || this.addColumnsPrefix;
|
|
21
|
-
|
|
22
|
-
const columnSql = columns.sql;
|
|
23
|
-
const alter = this.lowerCase ? 'alter table ' : 'ALTER TABLE ';
|
|
24
|
-
|
|
25
|
-
let sql = `${alter}${this.tableName()} ${prefix}`;
|
|
26
|
-
if (columns.sql.length > 1) {
|
|
27
|
-
sql += `(${columnSql.join(', ')})`;
|
|
28
|
-
} else {
|
|
29
|
-
sql += columnSql.join(', ');
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
this.pushQuery({
|
|
33
|
-
sql,
|
|
34
|
-
bindings: columns.bindings,
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
},
|
|
38
|
-
|
|
39
|
-
// Compile a rename column command.
|
|
40
|
-
renameColumn(from, to) {
|
|
41
|
-
// Remove quotes around tableName
|
|
42
|
-
const tableName = this.tableName().slice(1, -1);
|
|
43
|
-
return this.pushQuery(
|
|
44
|
-
Trigger.renameColumnTrigger(this.client.logger, tableName, from, to)
|
|
45
|
-
);
|
|
46
|
-
},
|
|
47
|
-
|
|
48
|
-
compileAdd(builder) {
|
|
49
|
-
const table = this.formatter.wrap(builder);
|
|
50
|
-
const columns = this.prefixArray('add column', this.getColumns(builder));
|
|
51
|
-
return this.pushQuery({
|
|
52
|
-
sql: `alter table ${table} ${columns.join(', ')}`,
|
|
53
|
-
});
|
|
54
|
-
},
|
|
55
|
-
|
|
56
|
-
// Adds the "create" query to the query sequence.
|
|
57
|
-
createQuery(columns, ifNot) {
|
|
58
|
-
const sql = `create table ${this.tableName()} (${columns.sql.join(', ')})`;
|
|
59
|
-
this.pushQuery({
|
|
60
|
-
// catch "name is already used by an existing object" for workaround for "if not exists"
|
|
61
|
-
sql: ifNot ? utils.wrapSqlWithCatch(sql, -955) : sql,
|
|
62
|
-
bindings: columns.bindings,
|
|
63
|
-
});
|
|
64
|
-
if (this.single.comment) this.comment(this.single.comment);
|
|
65
|
-
},
|
|
66
|
-
|
|
67
|
-
// Compiles the comment on the table.
|
|
68
|
-
comment(comment) {
|
|
69
|
-
this.pushQuery(`comment on table ${this.tableName()} is '${comment}'`);
|
|
70
|
-
},
|
|
71
|
-
|
|
72
|
-
addColumnsPrefix: 'add ',
|
|
73
|
-
|
|
74
|
-
alterColumnsPrefix: 'modify ',
|
|
75
|
-
|
|
76
|
-
dropColumn() {
|
|
77
|
-
const columns = helpers.normalizeArr.apply(null, arguments);
|
|
78
|
-
this.pushQuery(
|
|
79
|
-
`alter table ${this.tableName()} drop (${this.formatter.columnize(
|
|
80
|
-
columns
|
|
81
|
-
)})`
|
|
82
|
-
);
|
|
83
|
-
},
|
|
84
|
-
|
|
85
|
-
changeType() {
|
|
86
|
-
// alter table + table + ' modify ' + wrapped + '// type';
|
|
87
|
-
},
|
|
88
|
-
|
|
89
|
-
_indexCommand(type, tableName, columns) {
|
|
90
|
-
return this.formatter.wrap(
|
|
91
|
-
utils.generateCombinedName(this.client.logger, type, tableName, columns)
|
|
92
|
-
);
|
|
93
|
-
},
|
|
94
|
-
|
|
95
|
-
primary(columns, constraintName) {
|
|
96
|
-
constraintName = constraintName
|
|
97
|
-
? this.formatter.wrap(constraintName)
|
|
98
|
-
: this.formatter.wrap(`${this.tableNameRaw}_pkey`);
|
|
99
|
-
this.pushQuery(
|
|
100
|
-
`alter table ${this.tableName()} add constraint ${constraintName} primary key (${this.formatter.columnize(
|
|
101
|
-
columns
|
|
102
|
-
)})`
|
|
103
|
-
);
|
|
104
|
-
},
|
|
105
|
-
|
|
106
|
-
dropPrimary(constraintName) {
|
|
107
|
-
constraintName = constraintName
|
|
108
|
-
? this.formatter.wrap(constraintName)
|
|
109
|
-
: this.formatter.wrap(this.tableNameRaw + '_pkey');
|
|
110
|
-
this.pushQuery(
|
|
111
|
-
`alter table ${this.tableName()} drop constraint ${constraintName}`
|
|
112
|
-
);
|
|
113
|
-
},
|
|
114
|
-
|
|
115
|
-
index(columns, indexName) {
|
|
116
|
-
indexName = indexName
|
|
117
|
-
? this.formatter.wrap(indexName)
|
|
118
|
-
: this._indexCommand('index', this.tableNameRaw, columns);
|
|
119
|
-
this.pushQuery(
|
|
120
|
-
`create index ${indexName} on ${this.tableName()}` +
|
|
121
|
-
' (' +
|
|
122
|
-
this.formatter.columnize(columns) +
|
|
123
|
-
')'
|
|
124
|
-
);
|
|
125
|
-
},
|
|
126
|
-
|
|
127
|
-
dropIndex(columns, indexName) {
|
|
128
|
-
indexName = indexName
|
|
129
|
-
? this.formatter.wrap(indexName)
|
|
130
|
-
: this._indexCommand('index', this.tableNameRaw, columns);
|
|
131
|
-
this.pushQuery(`drop index ${indexName}`);
|
|
132
|
-
},
|
|
133
|
-
|
|
134
|
-
unique(columns, indexName) {
|
|
135
|
-
indexName = indexName
|
|
136
|
-
? this.formatter.wrap(indexName)
|
|
137
|
-
: this._indexCommand('unique', this.tableNameRaw, columns);
|
|
138
|
-
this.pushQuery(
|
|
139
|
-
`alter table ${this.tableName()} add constraint ${indexName}` +
|
|
140
|
-
' unique (' +
|
|
141
|
-
this.formatter.columnize(columns) +
|
|
142
|
-
')'
|
|
143
|
-
);
|
|
144
|
-
},
|
|
145
|
-
|
|
146
|
-
dropUnique(columns, indexName) {
|
|
147
|
-
indexName = indexName
|
|
148
|
-
? this.formatter.wrap(indexName)
|
|
149
|
-
: this._indexCommand('unique', this.tableNameRaw, columns);
|
|
150
|
-
this.pushQuery(
|
|
151
|
-
`alter table ${this.tableName()} drop constraint ${indexName}`
|
|
152
|
-
);
|
|
153
|
-
},
|
|
154
|
-
|
|
155
|
-
dropForeign(columns, indexName) {
|
|
156
|
-
indexName = indexName
|
|
157
|
-
? this.formatter.wrap(indexName)
|
|
158
|
-
: this._indexCommand('foreign', this.tableNameRaw, columns);
|
|
159
|
-
this.pushQuery(
|
|
160
|
-
`alter table ${this.tableName()} drop constraint ${indexName}`
|
|
161
|
-
);
|
|
162
|
-
},
|
|
163
|
-
});
|
|
164
|
-
|
|
165
|
-
module.exports = TableCompiler_Oracle;
|
|
1
|
+
/* eslint max-len:0 */
|
|
2
|
+
|
|
3
|
+
const { inherits } = require('util');
|
|
4
|
+
const utils = require('../utils');
|
|
5
|
+
const TableCompiler = require('../../../schema/tablecompiler');
|
|
6
|
+
const helpers = require('../../../helpers');
|
|
7
|
+
const Trigger = require('./trigger');
|
|
8
|
+
|
|
9
|
+
// Table Compiler
|
|
10
|
+
// ------
|
|
11
|
+
|
|
12
|
+
function TableCompiler_Oracle() {
|
|
13
|
+
TableCompiler.apply(this, arguments);
|
|
14
|
+
}
|
|
15
|
+
inherits(TableCompiler_Oracle, TableCompiler);
|
|
16
|
+
|
|
17
|
+
Object.assign(TableCompiler_Oracle.prototype, {
|
|
18
|
+
addColumns(columns, prefix) {
|
|
19
|
+
if (columns.sql.length > 0) {
|
|
20
|
+
prefix = prefix || this.addColumnsPrefix;
|
|
21
|
+
|
|
22
|
+
const columnSql = columns.sql;
|
|
23
|
+
const alter = this.lowerCase ? 'alter table ' : 'ALTER TABLE ';
|
|
24
|
+
|
|
25
|
+
let sql = `${alter}${this.tableName()} ${prefix}`;
|
|
26
|
+
if (columns.sql.length > 1) {
|
|
27
|
+
sql += `(${columnSql.join(', ')})`;
|
|
28
|
+
} else {
|
|
29
|
+
sql += columnSql.join(', ');
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
this.pushQuery({
|
|
33
|
+
sql,
|
|
34
|
+
bindings: columns.bindings,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
// Compile a rename column command.
|
|
40
|
+
renameColumn(from, to) {
|
|
41
|
+
// Remove quotes around tableName
|
|
42
|
+
const tableName = this.tableName().slice(1, -1);
|
|
43
|
+
return this.pushQuery(
|
|
44
|
+
Trigger.renameColumnTrigger(this.client.logger, tableName, from, to)
|
|
45
|
+
);
|
|
46
|
+
},
|
|
47
|
+
|
|
48
|
+
compileAdd(builder) {
|
|
49
|
+
const table = this.formatter.wrap(builder);
|
|
50
|
+
const columns = this.prefixArray('add column', this.getColumns(builder));
|
|
51
|
+
return this.pushQuery({
|
|
52
|
+
sql: `alter table ${table} ${columns.join(', ')}`,
|
|
53
|
+
});
|
|
54
|
+
},
|
|
55
|
+
|
|
56
|
+
// Adds the "create" query to the query sequence.
|
|
57
|
+
createQuery(columns, ifNot) {
|
|
58
|
+
const sql = `create table ${this.tableName()} (${columns.sql.join(', ')})`;
|
|
59
|
+
this.pushQuery({
|
|
60
|
+
// catch "name is already used by an existing object" for workaround for "if not exists"
|
|
61
|
+
sql: ifNot ? utils.wrapSqlWithCatch(sql, -955) : sql,
|
|
62
|
+
bindings: columns.bindings,
|
|
63
|
+
});
|
|
64
|
+
if (this.single.comment) this.comment(this.single.comment);
|
|
65
|
+
},
|
|
66
|
+
|
|
67
|
+
// Compiles the comment on the table.
|
|
68
|
+
comment(comment) {
|
|
69
|
+
this.pushQuery(`comment on table ${this.tableName()} is '${comment}'`);
|
|
70
|
+
},
|
|
71
|
+
|
|
72
|
+
addColumnsPrefix: 'add ',
|
|
73
|
+
|
|
74
|
+
alterColumnsPrefix: 'modify ',
|
|
75
|
+
|
|
76
|
+
dropColumn() {
|
|
77
|
+
const columns = helpers.normalizeArr.apply(null, arguments);
|
|
78
|
+
this.pushQuery(
|
|
79
|
+
`alter table ${this.tableName()} drop (${this.formatter.columnize(
|
|
80
|
+
columns
|
|
81
|
+
)})`
|
|
82
|
+
);
|
|
83
|
+
},
|
|
84
|
+
|
|
85
|
+
changeType() {
|
|
86
|
+
// alter table + table + ' modify ' + wrapped + '// type';
|
|
87
|
+
},
|
|
88
|
+
|
|
89
|
+
_indexCommand(type, tableName, columns) {
|
|
90
|
+
return this.formatter.wrap(
|
|
91
|
+
utils.generateCombinedName(this.client.logger, type, tableName, columns)
|
|
92
|
+
);
|
|
93
|
+
},
|
|
94
|
+
|
|
95
|
+
primary(columns, constraintName) {
|
|
96
|
+
constraintName = constraintName
|
|
97
|
+
? this.formatter.wrap(constraintName)
|
|
98
|
+
: this.formatter.wrap(`${this.tableNameRaw}_pkey`);
|
|
99
|
+
this.pushQuery(
|
|
100
|
+
`alter table ${this.tableName()} add constraint ${constraintName} primary key (${this.formatter.columnize(
|
|
101
|
+
columns
|
|
102
|
+
)})`
|
|
103
|
+
);
|
|
104
|
+
},
|
|
105
|
+
|
|
106
|
+
dropPrimary(constraintName) {
|
|
107
|
+
constraintName = constraintName
|
|
108
|
+
? this.formatter.wrap(constraintName)
|
|
109
|
+
: this.formatter.wrap(this.tableNameRaw + '_pkey');
|
|
110
|
+
this.pushQuery(
|
|
111
|
+
`alter table ${this.tableName()} drop constraint ${constraintName}`
|
|
112
|
+
);
|
|
113
|
+
},
|
|
114
|
+
|
|
115
|
+
index(columns, indexName) {
|
|
116
|
+
indexName = indexName
|
|
117
|
+
? this.formatter.wrap(indexName)
|
|
118
|
+
: this._indexCommand('index', this.tableNameRaw, columns);
|
|
119
|
+
this.pushQuery(
|
|
120
|
+
`create index ${indexName} on ${this.tableName()}` +
|
|
121
|
+
' (' +
|
|
122
|
+
this.formatter.columnize(columns) +
|
|
123
|
+
')'
|
|
124
|
+
);
|
|
125
|
+
},
|
|
126
|
+
|
|
127
|
+
dropIndex(columns, indexName) {
|
|
128
|
+
indexName = indexName
|
|
129
|
+
? this.formatter.wrap(indexName)
|
|
130
|
+
: this._indexCommand('index', this.tableNameRaw, columns);
|
|
131
|
+
this.pushQuery(`drop index ${indexName}`);
|
|
132
|
+
},
|
|
133
|
+
|
|
134
|
+
unique(columns, indexName) {
|
|
135
|
+
indexName = indexName
|
|
136
|
+
? this.formatter.wrap(indexName)
|
|
137
|
+
: this._indexCommand('unique', this.tableNameRaw, columns);
|
|
138
|
+
this.pushQuery(
|
|
139
|
+
`alter table ${this.tableName()} add constraint ${indexName}` +
|
|
140
|
+
' unique (' +
|
|
141
|
+
this.formatter.columnize(columns) +
|
|
142
|
+
')'
|
|
143
|
+
);
|
|
144
|
+
},
|
|
145
|
+
|
|
146
|
+
dropUnique(columns, indexName) {
|
|
147
|
+
indexName = indexName
|
|
148
|
+
? this.formatter.wrap(indexName)
|
|
149
|
+
: this._indexCommand('unique', this.tableNameRaw, columns);
|
|
150
|
+
this.pushQuery(
|
|
151
|
+
`alter table ${this.tableName()} drop constraint ${indexName}`
|
|
152
|
+
);
|
|
153
|
+
},
|
|
154
|
+
|
|
155
|
+
dropForeign(columns, indexName) {
|
|
156
|
+
indexName = indexName
|
|
157
|
+
? this.formatter.wrap(indexName)
|
|
158
|
+
: this._indexCommand('foreign', this.tableNameRaw, columns);
|
|
159
|
+
this.pushQuery(
|
|
160
|
+
`alter table ${this.tableName()} drop constraint ${indexName}`
|
|
161
|
+
);
|
|
162
|
+
},
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
module.exports = TableCompiler_Oracle;
|
|
@@ -1,126 +1,126 @@
|
|
|
1
|
-
const utils = require('../utils');
|
|
2
|
-
|
|
3
|
-
const trigger = {
|
|
4
|
-
renameColumnTrigger: function (logger, tableName, columnName, to) {
|
|
5
|
-
const triggerName = utils.generateCombinedName(
|
|
6
|
-
logger,
|
|
7
|
-
'autoinc_trg',
|
|
8
|
-
tableName
|
|
9
|
-
);
|
|
10
|
-
const sequenceName = utils.generateCombinedName(logger, 'seq', tableName);
|
|
11
|
-
return (
|
|
12
|
-
`DECLARE ` +
|
|
13
|
-
`PK_NAME VARCHAR(200); ` +
|
|
14
|
-
`IS_AUTOINC NUMBER := 0; ` +
|
|
15
|
-
`BEGIN` +
|
|
16
|
-
` EXECUTE IMMEDIATE ('ALTER TABLE "${tableName}" RENAME COLUMN "${columnName}" TO "${to}"');` +
|
|
17
|
-
` SELECT COUNT(*) INTO IS_AUTOINC from "USER_TRIGGERS" where trigger_name = '${triggerName}';` +
|
|
18
|
-
` IF (IS_AUTOINC > 0) THEN` +
|
|
19
|
-
` SELECT cols.column_name INTO PK_NAME` +
|
|
20
|
-
` FROM all_constraints cons, all_cons_columns cols` +
|
|
21
|
-
` WHERE cons.constraint_type = 'P'` +
|
|
22
|
-
` AND cons.constraint_name = cols.constraint_name` +
|
|
23
|
-
` AND cons.owner = cols.owner` +
|
|
24
|
-
` AND cols.table_name = '${tableName}';` +
|
|
25
|
-
` IF ('${to}' = PK_NAME) THEN` +
|
|
26
|
-
` EXECUTE IMMEDIATE ('DROP TRIGGER "${triggerName}"');` +
|
|
27
|
-
` EXECUTE IMMEDIATE ('create or replace trigger "${triggerName}"` +
|
|
28
|
-
` BEFORE INSERT on "${tableName}" for each row` +
|
|
29
|
-
` declare` +
|
|
30
|
-
` checking number := 1;` +
|
|
31
|
-
` begin` +
|
|
32
|
-
` if (:new."${to}" is null) then` +
|
|
33
|
-
` while checking >= 1 loop` +
|
|
34
|
-
` select "${sequenceName}".nextval into :new."${to}" from dual;` +
|
|
35
|
-
` select count("${to}") into checking from "${tableName}"` +
|
|
36
|
-
` where "${to}" = :new."${to}";` +
|
|
37
|
-
` end loop;` +
|
|
38
|
-
` end if;` +
|
|
39
|
-
` end;');` +
|
|
40
|
-
` end if;` +
|
|
41
|
-
` end if;` +
|
|
42
|
-
`END;`
|
|
43
|
-
);
|
|
44
|
-
},
|
|
45
|
-
|
|
46
|
-
createAutoIncrementTrigger: function (logger, tableName) {
|
|
47
|
-
const triggerName = utils.generateCombinedName(
|
|
48
|
-
logger,
|
|
49
|
-
'autoinc_trg',
|
|
50
|
-
tableName
|
|
51
|
-
);
|
|
52
|
-
const sequenceName = utils.generateCombinedName(logger, 'seq', tableName);
|
|
53
|
-
return (
|
|
54
|
-
`DECLARE ` +
|
|
55
|
-
`PK_NAME VARCHAR(200); ` +
|
|
56
|
-
`BEGIN` +
|
|
57
|
-
` EXECUTE IMMEDIATE ('CREATE SEQUENCE "${sequenceName}"');` +
|
|
58
|
-
` SELECT cols.column_name INTO PK_NAME` +
|
|
59
|
-
` FROM all_constraints cons, all_cons_columns cols` +
|
|
60
|
-
` WHERE cons.constraint_type = 'P'` +
|
|
61
|
-
` AND cons.constraint_name = cols.constraint_name` +
|
|
62
|
-
` AND cons.owner = cols.owner` +
|
|
63
|
-
` AND cols.table_name = '${tableName}';` +
|
|
64
|
-
` execute immediate ('create or replace trigger "${triggerName}"` +
|
|
65
|
-
` BEFORE INSERT on "${tableName}"` +
|
|
66
|
-
` for each row` +
|
|
67
|
-
` declare` +
|
|
68
|
-
` checking number := 1;` +
|
|
69
|
-
` begin` +
|
|
70
|
-
` if (:new."' || PK_NAME || '" is null) then` +
|
|
71
|
-
` while checking >= 1 loop` +
|
|
72
|
-
` select "${sequenceName}".nextval into :new."' || PK_NAME || '" from dual;` +
|
|
73
|
-
` select count("' || PK_NAME || '") into checking from "${tableName}"` +
|
|
74
|
-
` where "' || PK_NAME || '" = :new."' || PK_NAME || '";` +
|
|
75
|
-
` end loop;` +
|
|
76
|
-
` end if;` +
|
|
77
|
-
` end;'); ` +
|
|
78
|
-
`END;`
|
|
79
|
-
);
|
|
80
|
-
},
|
|
81
|
-
|
|
82
|
-
renameTableAndAutoIncrementTrigger: function (logger, tableName, to) {
|
|
83
|
-
const triggerName = utils.generateCombinedName(
|
|
84
|
-
logger,
|
|
85
|
-
'autoinc_trg',
|
|
86
|
-
tableName
|
|
87
|
-
);
|
|
88
|
-
const sequenceName = utils.generateCombinedName(logger, 'seq', tableName);
|
|
89
|
-
const toTriggerName = utils.generateCombinedName(logger, 'autoinc_trg', to);
|
|
90
|
-
const toSequenceName = utils.generateCombinedName(logger, 'seq', to);
|
|
91
|
-
return (
|
|
92
|
-
`DECLARE ` +
|
|
93
|
-
`PK_NAME VARCHAR(200); ` +
|
|
94
|
-
`IS_AUTOINC NUMBER := 0; ` +
|
|
95
|
-
`BEGIN` +
|
|
96
|
-
` EXECUTE IMMEDIATE ('RENAME "${tableName}" TO "${to}"');` +
|
|
97
|
-
` SELECT COUNT(*) INTO IS_AUTOINC from "USER_TRIGGERS" where trigger_name = '${triggerName}';` +
|
|
98
|
-
` IF (IS_AUTOINC > 0) THEN` +
|
|
99
|
-
` EXECUTE IMMEDIATE ('DROP TRIGGER "${triggerName}"');` +
|
|
100
|
-
` EXECUTE IMMEDIATE ('RENAME "${sequenceName}" TO "${toSequenceName}"');` +
|
|
101
|
-
` SELECT cols.column_name INTO PK_NAME` +
|
|
102
|
-
` FROM all_constraints cons, all_cons_columns cols` +
|
|
103
|
-
` WHERE cons.constraint_type = 'P'` +
|
|
104
|
-
` AND cons.constraint_name = cols.constraint_name` +
|
|
105
|
-
` AND cons.owner = cols.owner` +
|
|
106
|
-
` AND cols.table_name = '${to}';` +
|
|
107
|
-
` EXECUTE IMMEDIATE ('create or replace trigger "${toTriggerName}"` +
|
|
108
|
-
` BEFORE INSERT on "${to}" for each row` +
|
|
109
|
-
` declare` +
|
|
110
|
-
` checking number := 1;` +
|
|
111
|
-
` begin` +
|
|
112
|
-
` if (:new."' || PK_NAME || '" is null) then` +
|
|
113
|
-
` while checking >= 1 loop` +
|
|
114
|
-
` select "${toSequenceName}".nextval into :new."' || PK_NAME || '" from dual;` +
|
|
115
|
-
` select count("' || PK_NAME || '") into checking from "${to}"` +
|
|
116
|
-
` where "' || PK_NAME || '" = :new."' || PK_NAME || '";` +
|
|
117
|
-
` end loop;` +
|
|
118
|
-
` end if;` +
|
|
119
|
-
` end;');` +
|
|
120
|
-
` end if;` +
|
|
121
|
-
`END;`
|
|
122
|
-
);
|
|
123
|
-
},
|
|
124
|
-
};
|
|
125
|
-
|
|
126
|
-
module.exports = trigger;
|
|
1
|
+
const utils = require('../utils');
|
|
2
|
+
|
|
3
|
+
const trigger = {
|
|
4
|
+
renameColumnTrigger: function (logger, tableName, columnName, to) {
|
|
5
|
+
const triggerName = utils.generateCombinedName(
|
|
6
|
+
logger,
|
|
7
|
+
'autoinc_trg',
|
|
8
|
+
tableName
|
|
9
|
+
);
|
|
10
|
+
const sequenceName = utils.generateCombinedName(logger, 'seq', tableName);
|
|
11
|
+
return (
|
|
12
|
+
`DECLARE ` +
|
|
13
|
+
`PK_NAME VARCHAR(200); ` +
|
|
14
|
+
`IS_AUTOINC NUMBER := 0; ` +
|
|
15
|
+
`BEGIN` +
|
|
16
|
+
` EXECUTE IMMEDIATE ('ALTER TABLE "${tableName}" RENAME COLUMN "${columnName}" TO "${to}"');` +
|
|
17
|
+
` SELECT COUNT(*) INTO IS_AUTOINC from "USER_TRIGGERS" where trigger_name = '${triggerName}';` +
|
|
18
|
+
` IF (IS_AUTOINC > 0) THEN` +
|
|
19
|
+
` SELECT cols.column_name INTO PK_NAME` +
|
|
20
|
+
` FROM all_constraints cons, all_cons_columns cols` +
|
|
21
|
+
` WHERE cons.constraint_type = 'P'` +
|
|
22
|
+
` AND cons.constraint_name = cols.constraint_name` +
|
|
23
|
+
` AND cons.owner = cols.owner` +
|
|
24
|
+
` AND cols.table_name = '${tableName}';` +
|
|
25
|
+
` IF ('${to}' = PK_NAME) THEN` +
|
|
26
|
+
` EXECUTE IMMEDIATE ('DROP TRIGGER "${triggerName}"');` +
|
|
27
|
+
` EXECUTE IMMEDIATE ('create or replace trigger "${triggerName}"` +
|
|
28
|
+
` BEFORE INSERT on "${tableName}" for each row` +
|
|
29
|
+
` declare` +
|
|
30
|
+
` checking number := 1;` +
|
|
31
|
+
` begin` +
|
|
32
|
+
` if (:new."${to}" is null) then` +
|
|
33
|
+
` while checking >= 1 loop` +
|
|
34
|
+
` select "${sequenceName}".nextval into :new."${to}" from dual;` +
|
|
35
|
+
` select count("${to}") into checking from "${tableName}"` +
|
|
36
|
+
` where "${to}" = :new."${to}";` +
|
|
37
|
+
` end loop;` +
|
|
38
|
+
` end if;` +
|
|
39
|
+
` end;');` +
|
|
40
|
+
` end if;` +
|
|
41
|
+
` end if;` +
|
|
42
|
+
`END;`
|
|
43
|
+
);
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
createAutoIncrementTrigger: function (logger, tableName) {
|
|
47
|
+
const triggerName = utils.generateCombinedName(
|
|
48
|
+
logger,
|
|
49
|
+
'autoinc_trg',
|
|
50
|
+
tableName
|
|
51
|
+
);
|
|
52
|
+
const sequenceName = utils.generateCombinedName(logger, 'seq', tableName);
|
|
53
|
+
return (
|
|
54
|
+
`DECLARE ` +
|
|
55
|
+
`PK_NAME VARCHAR(200); ` +
|
|
56
|
+
`BEGIN` +
|
|
57
|
+
` EXECUTE IMMEDIATE ('CREATE SEQUENCE "${sequenceName}"');` +
|
|
58
|
+
` SELECT cols.column_name INTO PK_NAME` +
|
|
59
|
+
` FROM all_constraints cons, all_cons_columns cols` +
|
|
60
|
+
` WHERE cons.constraint_type = 'P'` +
|
|
61
|
+
` AND cons.constraint_name = cols.constraint_name` +
|
|
62
|
+
` AND cons.owner = cols.owner` +
|
|
63
|
+
` AND cols.table_name = '${tableName}';` +
|
|
64
|
+
` execute immediate ('create or replace trigger "${triggerName}"` +
|
|
65
|
+
` BEFORE INSERT on "${tableName}"` +
|
|
66
|
+
` for each row` +
|
|
67
|
+
` declare` +
|
|
68
|
+
` checking number := 1;` +
|
|
69
|
+
` begin` +
|
|
70
|
+
` if (:new."' || PK_NAME || '" is null) then` +
|
|
71
|
+
` while checking >= 1 loop` +
|
|
72
|
+
` select "${sequenceName}".nextval into :new."' || PK_NAME || '" from dual;` +
|
|
73
|
+
` select count("' || PK_NAME || '") into checking from "${tableName}"` +
|
|
74
|
+
` where "' || PK_NAME || '" = :new."' || PK_NAME || '";` +
|
|
75
|
+
` end loop;` +
|
|
76
|
+
` end if;` +
|
|
77
|
+
` end;'); ` +
|
|
78
|
+
`END;`
|
|
79
|
+
);
|
|
80
|
+
},
|
|
81
|
+
|
|
82
|
+
renameTableAndAutoIncrementTrigger: function (logger, tableName, to) {
|
|
83
|
+
const triggerName = utils.generateCombinedName(
|
|
84
|
+
logger,
|
|
85
|
+
'autoinc_trg',
|
|
86
|
+
tableName
|
|
87
|
+
);
|
|
88
|
+
const sequenceName = utils.generateCombinedName(logger, 'seq', tableName);
|
|
89
|
+
const toTriggerName = utils.generateCombinedName(logger, 'autoinc_trg', to);
|
|
90
|
+
const toSequenceName = utils.generateCombinedName(logger, 'seq', to);
|
|
91
|
+
return (
|
|
92
|
+
`DECLARE ` +
|
|
93
|
+
`PK_NAME VARCHAR(200); ` +
|
|
94
|
+
`IS_AUTOINC NUMBER := 0; ` +
|
|
95
|
+
`BEGIN` +
|
|
96
|
+
` EXECUTE IMMEDIATE ('RENAME "${tableName}" TO "${to}"');` +
|
|
97
|
+
` SELECT COUNT(*) INTO IS_AUTOINC from "USER_TRIGGERS" where trigger_name = '${triggerName}';` +
|
|
98
|
+
` IF (IS_AUTOINC > 0) THEN` +
|
|
99
|
+
` EXECUTE IMMEDIATE ('DROP TRIGGER "${triggerName}"');` +
|
|
100
|
+
` EXECUTE IMMEDIATE ('RENAME "${sequenceName}" TO "${toSequenceName}"');` +
|
|
101
|
+
` SELECT cols.column_name INTO PK_NAME` +
|
|
102
|
+
` FROM all_constraints cons, all_cons_columns cols` +
|
|
103
|
+
` WHERE cons.constraint_type = 'P'` +
|
|
104
|
+
` AND cons.constraint_name = cols.constraint_name` +
|
|
105
|
+
` AND cons.owner = cols.owner` +
|
|
106
|
+
` AND cols.table_name = '${to}';` +
|
|
107
|
+
` EXECUTE IMMEDIATE ('create or replace trigger "${toTriggerName}"` +
|
|
108
|
+
` BEFORE INSERT on "${to}" for each row` +
|
|
109
|
+
` declare` +
|
|
110
|
+
` checking number := 1;` +
|
|
111
|
+
` begin` +
|
|
112
|
+
` if (:new."' || PK_NAME || '" is null) then` +
|
|
113
|
+
` while checking >= 1 loop` +
|
|
114
|
+
` select "${toSequenceName}".nextval into :new."' || PK_NAME || '" from dual;` +
|
|
115
|
+
` select count("' || PK_NAME || '") into checking from "${to}"` +
|
|
116
|
+
` where "' || PK_NAME || '" = :new."' || PK_NAME || '";` +
|
|
117
|
+
` end loop;` +
|
|
118
|
+
` end if;` +
|
|
119
|
+
` end;');` +
|
|
120
|
+
` end if;` +
|
|
121
|
+
`END;`
|
|
122
|
+
);
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
module.exports = trigger;
|