knex 3.2.2 → 3.2.4
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 +2447 -2441
- package/CONTRIBUTING.md +190 -190
- package/LICENSE +22 -22
- package/README.md +156 -156
- package/UPGRADING.md +245 -245
- package/bin/cli.js +516 -516
- package/bin/knexfile-runtime-error.js +27 -27
- package/bin/utils/cli-config-utils.js +217 -217
- package/bin/utils/constants.js +7 -7
- package/bin/utils/migrationsLister.js +37 -37
- package/knex.js +23 -23
- package/knex.mjs +11 -11
- package/lib/builder-interface-augmenter.js +120 -120
- package/lib/client.js +585 -585
- package/lib/constants.js +61 -61
- package/lib/dialects/better-sqlite3/index.js +101 -101
- package/lib/dialects/cockroachdb/crdb-columncompiler.js +14 -14
- package/lib/dialects/cockroachdb/crdb-querybuilder.js +11 -11
- package/lib/dialects/cockroachdb/crdb-querycompiler.js +122 -122
- package/lib/dialects/cockroachdb/crdb-tablecompiler.js +46 -46
- package/lib/dialects/cockroachdb/crdb-viewcompiler.js +15 -15
- package/lib/dialects/cockroachdb/index.js +86 -86
- package/lib/dialects/index.js +34 -34
- package/lib/dialects/mssql/index.js +498 -498
- package/lib/dialects/mssql/mssql-formatter.js +34 -34
- package/lib/dialects/mssql/query/mssql-querycompiler.js +601 -601
- package/lib/dialects/mssql/schema/mssql-columncompiler.js +185 -185
- package/lib/dialects/mssql/schema/mssql-compiler.js +91 -91
- package/lib/dialects/mssql/schema/mssql-tablecompiler.js +393 -393
- package/lib/dialects/mssql/schema/mssql-viewcompiler.js +55 -55
- package/lib/dialects/mssql/transaction.js +176 -176
- package/lib/dialects/mysql/index.js +317 -317
- package/lib/dialects/mysql/query/mysql-querybuilder.js +14 -14
- package/lib/dialects/mysql/query/mysql-querycompiler.js +292 -292
- package/lib/dialects/mysql/schema/mysql-columncompiler.js +193 -193
- package/lib/dialects/mysql/schema/mysql-compiler.js +60 -60
- package/lib/dialects/mysql/schema/mysql-tablecompiler.js +426 -426
- package/lib/dialects/mysql/schema/mysql-viewbuilder.js +21 -21
- package/lib/dialects/mysql/schema/mysql-viewcompiler.js +15 -15
- package/lib/dialects/mysql/transaction.js +46 -46
- package/lib/dialects/mysql2/index.js +53 -53
- package/lib/dialects/mysql2/transaction.js +44 -44
- package/lib/dialects/oracle/DEAD_CODE.md +5 -5
- package/lib/dialects/oracle/index.js +92 -92
- package/lib/dialects/oracle/query/oracle-querycompiler.js +343 -343
- package/lib/dialects/oracle/schema/internal/incrementUtils.js +22 -22
- package/lib/dialects/oracle/schema/internal/trigger.js +155 -155
- package/lib/dialects/oracle/schema/oracle-columnbuilder.js +17 -17
- package/lib/dialects/oracle/schema/oracle-columncompiler.js +126 -126
- package/lib/dialects/oracle/schema/oracle-compiler.js +124 -124
- package/lib/dialects/oracle/schema/oracle-tablecompiler.js +210 -210
- package/lib/dialects/oracle/utils.js +107 -107
- package/lib/dialects/oracledb/index.js +381 -381
- package/lib/dialects/oracledb/query/oracledb-querycompiler.js +481 -481
- package/lib/dialects/oracledb/schema/oracledb-columncompiler.js +61 -61
- package/lib/dialects/oracledb/schema/oracledb-tablecompiler.js +19 -19
- package/lib/dialects/oracledb/schema/oracledb-viewbuilder.js +13 -13
- package/lib/dialects/oracledb/schema/oracledb-viewcompiler.js +19 -19
- package/lib/dialects/oracledb/transaction.js +98 -98
- package/lib/dialects/oracledb/utils.js +208 -208
- package/lib/dialects/pgnative/index.js +60 -60
- package/lib/dialects/postgres/execution/pg-transaction.js +19 -19
- package/lib/dialects/postgres/index.js +373 -373
- package/lib/dialects/postgres/query/pg-querybuilder.js +43 -43
- package/lib/dialects/postgres/query/pg-querycompiler.js +400 -400
- package/lib/dialects/postgres/schema/pg-columncompiler.js +162 -162
- package/lib/dialects/postgres/schema/pg-compiler.js +138 -138
- package/lib/dialects/postgres/schema/pg-tablecompiler.js +331 -331
- package/lib/dialects/postgres/schema/pg-viewbuilder.js +21 -21
- package/lib/dialects/postgres/schema/pg-viewcompiler.js +35 -35
- package/lib/dialects/redshift/index.js +86 -86
- package/lib/dialects/redshift/query/redshift-querycompiler.js +163 -163
- package/lib/dialects/redshift/schema/redshift-columnbuilder.js +22 -22
- package/lib/dialects/redshift/schema/redshift-columncompiler.js +67 -67
- package/lib/dialects/redshift/schema/redshift-compiler.js +14 -14
- package/lib/dialects/redshift/schema/redshift-tablecompiler.js +134 -134
- package/lib/dialects/redshift/schema/redshift-viewcompiler.js +11 -11
- package/lib/dialects/redshift/transaction.js +32 -32
- package/lib/dialects/sqlite3/execution/sqlite-transaction.js +172 -172
- package/lib/dialects/sqlite3/index.js +263 -263
- package/lib/dialects/sqlite3/query/sqlite-querybuilder.js +33 -33
- package/lib/dialects/sqlite3/query/sqlite-querycompiler.js +341 -341
- package/lib/dialects/sqlite3/schema/ddl.js +380 -380
- package/lib/dialects/sqlite3/schema/internal/compiler.js +327 -327
- package/lib/dialects/sqlite3/schema/internal/parser-combinator.js +161 -161
- package/lib/dialects/sqlite3/schema/internal/parser.js +638 -638
- package/lib/dialects/sqlite3/schema/internal/sqlite-ddl-operations.js +41 -41
- package/lib/dialects/sqlite3/schema/internal/tokenizer.js +38 -38
- package/lib/dialects/sqlite3/schema/internal/utils.js +12 -12
- package/lib/dialects/sqlite3/schema/sqlite-columncompiler.js +50 -50
- package/lib/dialects/sqlite3/schema/sqlite-compiler.js +80 -80
- package/lib/dialects/sqlite3/schema/sqlite-tablecompiler.js +364 -364
- package/lib/dialects/sqlite3/schema/sqlite-viewcompiler.js +40 -40
- package/lib/execution/batch-insert.js +51 -51
- package/lib/execution/internal/delay.js +6 -6
- package/lib/execution/internal/ensure-connection-callback.js +41 -41
- package/lib/execution/internal/query-executioner.js +62 -62
- package/lib/execution/runner.js +325 -325
- package/lib/execution/transaction.js +417 -417
- package/lib/formatter/formatterUtils.js +42 -42
- package/lib/formatter/rawFormatter.js +84 -84
- package/lib/formatter/wrappingFormatter.js +253 -253
- package/lib/formatter.js +25 -25
- package/lib/index.js +3 -3
- package/lib/knex-builder/FunctionHelper.js +80 -80
- package/lib/knex-builder/Knex.js +59 -59
- package/lib/knex-builder/internal/config-resolver.js +57 -57
- package/lib/knex-builder/internal/parse-connection.js +87 -87
- package/lib/knex-builder/make-knex.js +345 -345
- package/lib/logger.js +76 -76
- package/lib/migrations/common/MigrationsLoader.js +36 -36
- package/lib/migrations/migrate/MigrationGenerator.js +84 -84
- package/lib/migrations/migrate/Migrator.js +632 -632
- package/lib/migrations/migrate/migrate-stub.js +17 -17
- package/lib/migrations/migrate/migration-list-resolver.js +33 -33
- package/lib/migrations/migrate/migrator-configuration-merger.js +58 -58
- package/lib/migrations/migrate/sources/fs-migrations.js +74 -74
- package/lib/migrations/migrate/stub/cjs.stub +15 -15
- package/lib/migrations/migrate/stub/coffee.stub +13 -13
- package/lib/migrations/migrate/stub/eg.stub +14 -14
- package/lib/migrations/migrate/stub/js-schema.stub +22 -22
- package/lib/migrations/migrate/stub/js.stub +22 -22
- package/lib/migrations/migrate/stub/knexfile-coffee.stub +34 -34
- package/lib/migrations/migrate/stub/knexfile-eg.stub +43 -43
- package/lib/migrations/migrate/stub/knexfile-js.stub +47 -47
- package/lib/migrations/migrate/stub/knexfile-ls.stub +35 -35
- package/lib/migrations/migrate/stub/knexfile-ts.stub +47 -47
- package/lib/migrations/migrate/stub/ls.stub +14 -14
- package/lib/migrations/migrate/stub/mjs.stub +23 -23
- package/lib/migrations/migrate/stub/ts-schema.stub +21 -21
- package/lib/migrations/migrate/stub/ts.stub +21 -21
- package/lib/migrations/migrate/table-creator.js +77 -77
- package/lib/migrations/migrate/table-resolver.js +27 -27
- package/lib/migrations/seed/Seeder.js +137 -137
- package/lib/migrations/seed/seed-stub.js +13 -13
- package/lib/migrations/seed/seeder-configuration-merger.js +60 -60
- package/lib/migrations/seed/sources/fs-seeds.js +65 -65
- package/lib/migrations/seed/stub/coffee.stub +9 -9
- package/lib/migrations/seed/stub/eg.stub +11 -11
- package/lib/migrations/seed/stub/js.stub +13 -13
- package/lib/migrations/seed/stub/ls.stub +11 -11
- package/lib/migrations/seed/stub/mjs.stub +12 -12
- package/lib/migrations/seed/stub/ts.stub +13 -13
- package/lib/migrations/util/fs.js +86 -86
- package/lib/migrations/util/import-file.js +12 -12
- package/lib/migrations/util/is-module-type.js +9 -9
- package/lib/migrations/util/template.js +52 -52
- package/lib/migrations/util/timestamp.js +14 -14
- package/lib/query/analytic.js +52 -52
- package/lib/query/constants.js +15 -15
- package/lib/query/joinclause.js +270 -270
- package/lib/query/method-constants.js +136 -136
- package/lib/query/querybuilder.js +1793 -1793
- package/lib/query/querycompiler.js +1634 -1634
- package/lib/raw.js +139 -139
- package/lib/ref.js +39 -39
- package/lib/schema/builder.js +115 -115
- package/lib/schema/columnbuilder.js +146 -146
- package/lib/schema/columncompiler.js +307 -307
- package/lib/schema/compiler.js +187 -187
- package/lib/schema/internal/helpers.js +55 -55
- package/lib/schema/tablebuilder.js +379 -379
- package/lib/schema/tablecompiler.js +450 -450
- package/lib/schema/viewbuilder.js +92 -92
- package/lib/schema/viewcompiler.js +138 -138
- package/lib/util/finally-mixin.js +13 -13
- package/lib/util/helpers.js +95 -95
- package/lib/util/is.js +32 -32
- package/lib/util/nanoid.js +40 -40
- package/lib/util/noop.js +1 -1
- package/lib/util/save-async-stack.js +14 -14
- package/lib/util/security.js +32 -32
- package/lib/util/string.js +190 -190
- package/lib/util/timeout.js +29 -29
- package/package.json +294 -296
- package/scripts/act-testing/act.sh +19 -19
- package/scripts/act-testing/merged-no-label.json +11 -11
- package/scripts/act-testing/merged-patch-labeled.json +12 -12
- package/scripts/act-testing/merged-skip-labeled.json +12 -12
- package/scripts/act-testing/not-merged-patch-labeled.json +12 -12
- package/scripts/build-for-release.sh +121 -121
- package/scripts/build.js +125 -125
- package/scripts/clean.js +31 -31
- package/scripts/docker-compose.yml +150 -150
- package/scripts/format-changelog.js +55 -55
- package/scripts/next-release-howto.md +24 -24
- package/scripts/oracledb-install-driver-libs.sh +82 -82
- package/scripts/release.sh +36 -36
- package/scripts/runkit-example.js +35 -35
- package/scripts/stress-test/README.txt +18 -18
- package/scripts/stress-test/docker-compose.yml +55 -55
- package/scripts/stress-test/knex-stress-test.js +212 -212
- package/scripts/stress-test/mysql2-random-hanging-every-now-and-then.js +149 -149
- package/scripts/stress-test/mysql2-sudden-exit-without-error.js +101 -101
- package/scripts/stress-test/reconnect-test-mysql-based-drivers.js +188 -188
- package/types/index.d.mts +11 -0
- package/types/index.d.ts +3321 -3321
- package/types/result.d.ts +27 -27
- package/types/tables.d.ts +4 -4
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
// Redshift Column Compiler
|
|
2
|
-
// -------
|
|
3
|
-
|
|
4
|
-
const ColumnCompiler_PG = require('../../postgres/schema/pg-columncompiler');
|
|
5
|
-
const ColumnCompiler = require('../../../schema/columncompiler');
|
|
6
|
-
|
|
7
|
-
class ColumnCompiler_Redshift extends ColumnCompiler_PG {
|
|
8
|
-
constructor() {
|
|
9
|
-
super(...arguments);
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
// Types:
|
|
13
|
-
// ------
|
|
14
|
-
|
|
15
|
-
bit(column) {
|
|
16
|
-
return column.length !== false ? `char(${column.length})` : 'char(1)';
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
datetime(without) {
|
|
20
|
-
return without ? 'timestamp' : 'timestamptz';
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
timestamp(without) {
|
|
24
|
-
return without ? 'timestamp' : 'timestamptz';
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
// Modifiers:
|
|
28
|
-
// ------
|
|
29
|
-
comment(comment) {
|
|
30
|
-
this.pushAdditional(function () {
|
|
31
|
-
this.pushQuery(
|
|
32
|
-
`comment on column ${this.tableCompiler.tableName()}.` +
|
|
33
|
-
this.formatter.wrap(this.args[0]) +
|
|
34
|
-
' is ' +
|
|
35
|
-
(comment ? `'${comment}'` : 'NULL')
|
|
36
|
-
);
|
|
37
|
-
}, comment);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
ColumnCompiler_Redshift.prototype.increments = ({ primaryKey = true } = {}) =>
|
|
42
|
-
'integer identity(1,1)' + (primaryKey ? ' primary key' : '') + ' not null';
|
|
43
|
-
ColumnCompiler_Redshift.prototype.bigincrements = ({
|
|
44
|
-
primaryKey = true,
|
|
45
|
-
} = {}) =>
|
|
46
|
-
'bigint identity(1,1)' + (primaryKey ? ' primary key' : '') + ' not null';
|
|
47
|
-
ColumnCompiler_Redshift.prototype.binary = 'varchar(max)';
|
|
48
|
-
ColumnCompiler_Redshift.prototype.blob = 'varchar(max)';
|
|
49
|
-
ColumnCompiler_Redshift.prototype.enu = 'varchar(255)';
|
|
50
|
-
ColumnCompiler_Redshift.prototype.enum = 'varchar(255)';
|
|
51
|
-
ColumnCompiler_Redshift.prototype.json = 'varchar(max)';
|
|
52
|
-
ColumnCompiler_Redshift.prototype.jsonb = 'varchar(max)';
|
|
53
|
-
ColumnCompiler_Redshift.prototype.longblob = 'varchar(max)';
|
|
54
|
-
ColumnCompiler_Redshift.prototype.mediumblob = 'varchar(16777218)';
|
|
55
|
-
ColumnCompiler_Redshift.prototype.set = 'text';
|
|
56
|
-
ColumnCompiler_Redshift.prototype.text = 'varchar(max)';
|
|
57
|
-
ColumnCompiler_Redshift.prototype.tinyblob = 'varchar(256)';
|
|
58
|
-
ColumnCompiler_Redshift.prototype.uuid = ColumnCompiler.prototype.uuid;
|
|
59
|
-
ColumnCompiler_Redshift.prototype.varbinary = 'varchar(max)';
|
|
60
|
-
ColumnCompiler_Redshift.prototype.bigint = 'bigint';
|
|
61
|
-
ColumnCompiler_Redshift.prototype.bool = 'boolean';
|
|
62
|
-
ColumnCompiler_Redshift.prototype.double = 'double precision';
|
|
63
|
-
ColumnCompiler_Redshift.prototype.floating = 'real';
|
|
64
|
-
ColumnCompiler_Redshift.prototype.smallint = 'smallint';
|
|
65
|
-
ColumnCompiler_Redshift.prototype.tinyint = 'smallint';
|
|
66
|
-
|
|
67
|
-
module.exports = ColumnCompiler_Redshift;
|
|
1
|
+
// Redshift Column Compiler
|
|
2
|
+
// -------
|
|
3
|
+
|
|
4
|
+
const ColumnCompiler_PG = require('../../postgres/schema/pg-columncompiler');
|
|
5
|
+
const ColumnCompiler = require('../../../schema/columncompiler');
|
|
6
|
+
|
|
7
|
+
class ColumnCompiler_Redshift extends ColumnCompiler_PG {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
// Types:
|
|
13
|
+
// ------
|
|
14
|
+
|
|
15
|
+
bit(column) {
|
|
16
|
+
return column.length !== false ? `char(${column.length})` : 'char(1)';
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
datetime(without) {
|
|
20
|
+
return without ? 'timestamp' : 'timestamptz';
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
timestamp(without) {
|
|
24
|
+
return without ? 'timestamp' : 'timestamptz';
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Modifiers:
|
|
28
|
+
// ------
|
|
29
|
+
comment(comment) {
|
|
30
|
+
this.pushAdditional(function () {
|
|
31
|
+
this.pushQuery(
|
|
32
|
+
`comment on column ${this.tableCompiler.tableName()}.` +
|
|
33
|
+
this.formatter.wrap(this.args[0]) +
|
|
34
|
+
' is ' +
|
|
35
|
+
(comment ? `'${comment}'` : 'NULL')
|
|
36
|
+
);
|
|
37
|
+
}, comment);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
ColumnCompiler_Redshift.prototype.increments = ({ primaryKey = true } = {}) =>
|
|
42
|
+
'integer identity(1,1)' + (primaryKey ? ' primary key' : '') + ' not null';
|
|
43
|
+
ColumnCompiler_Redshift.prototype.bigincrements = ({
|
|
44
|
+
primaryKey = true,
|
|
45
|
+
} = {}) =>
|
|
46
|
+
'bigint identity(1,1)' + (primaryKey ? ' primary key' : '') + ' not null';
|
|
47
|
+
ColumnCompiler_Redshift.prototype.binary = 'varchar(max)';
|
|
48
|
+
ColumnCompiler_Redshift.prototype.blob = 'varchar(max)';
|
|
49
|
+
ColumnCompiler_Redshift.prototype.enu = 'varchar(255)';
|
|
50
|
+
ColumnCompiler_Redshift.prototype.enum = 'varchar(255)';
|
|
51
|
+
ColumnCompiler_Redshift.prototype.json = 'varchar(max)';
|
|
52
|
+
ColumnCompiler_Redshift.prototype.jsonb = 'varchar(max)';
|
|
53
|
+
ColumnCompiler_Redshift.prototype.longblob = 'varchar(max)';
|
|
54
|
+
ColumnCompiler_Redshift.prototype.mediumblob = 'varchar(16777218)';
|
|
55
|
+
ColumnCompiler_Redshift.prototype.set = 'text';
|
|
56
|
+
ColumnCompiler_Redshift.prototype.text = 'varchar(max)';
|
|
57
|
+
ColumnCompiler_Redshift.prototype.tinyblob = 'varchar(256)';
|
|
58
|
+
ColumnCompiler_Redshift.prototype.uuid = ColumnCompiler.prototype.uuid;
|
|
59
|
+
ColumnCompiler_Redshift.prototype.varbinary = 'varchar(max)';
|
|
60
|
+
ColumnCompiler_Redshift.prototype.bigint = 'bigint';
|
|
61
|
+
ColumnCompiler_Redshift.prototype.bool = 'boolean';
|
|
62
|
+
ColumnCompiler_Redshift.prototype.double = 'double precision';
|
|
63
|
+
ColumnCompiler_Redshift.prototype.floating = 'real';
|
|
64
|
+
ColumnCompiler_Redshift.prototype.smallint = 'smallint';
|
|
65
|
+
ColumnCompiler_Redshift.prototype.tinyint = 'smallint';
|
|
66
|
+
|
|
67
|
+
module.exports = ColumnCompiler_Redshift;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
/* eslint max-len: 0 */
|
|
2
|
-
|
|
3
|
-
// Redshift Table Builder & Compiler
|
|
4
|
-
// -------
|
|
5
|
-
|
|
6
|
-
const SchemaCompiler_PG = require('../../postgres/schema/pg-compiler');
|
|
7
|
-
|
|
8
|
-
class SchemaCompiler_Redshift extends SchemaCompiler_PG {
|
|
9
|
-
constructor() {
|
|
10
|
-
super(...arguments);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
module.exports = SchemaCompiler_Redshift;
|
|
1
|
+
/* eslint max-len: 0 */
|
|
2
|
+
|
|
3
|
+
// Redshift Table Builder & Compiler
|
|
4
|
+
// -------
|
|
5
|
+
|
|
6
|
+
const SchemaCompiler_PG = require('../../postgres/schema/pg-compiler');
|
|
7
|
+
|
|
8
|
+
class SchemaCompiler_Redshift extends SchemaCompiler_PG {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
module.exports = SchemaCompiler_Redshift;
|
|
@@ -1,134 +1,134 @@
|
|
|
1
|
-
/* eslint max-len: 0 */
|
|
2
|
-
|
|
3
|
-
// Redshift Table Builder & Compiler
|
|
4
|
-
// -------
|
|
5
|
-
|
|
6
|
-
const has = require('lodash/has');
|
|
7
|
-
const TableCompiler_PG = require('../../postgres/schema/pg-tablecompiler');
|
|
8
|
-
|
|
9
|
-
class TableCompiler_Redshift extends TableCompiler_PG {
|
|
10
|
-
constructor() {
|
|
11
|
-
super(...arguments);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
index(columns, indexName, options) {
|
|
15
|
-
this.client.logger.warn(
|
|
16
|
-
'Redshift does not support the creation of indexes.'
|
|
17
|
-
);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
dropIndex(columns, indexName) {
|
|
21
|
-
this.client.logger.warn(
|
|
22
|
-
'Redshift does not support the deletion of indexes.'
|
|
23
|
-
);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
dropPrimaryIfExists() {
|
|
27
|
-
throw new Error('.dropPrimaryIfExists() is not supported by redshift');
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
dropForeignIfExists() {
|
|
31
|
-
throw new Error('.dropForeignIfExists() is not supported by redshift');
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
dropUniqueIfExists() {
|
|
35
|
-
throw new Error('.dropUniqueIfExists() is not supported by redshift');
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// TODO: have to disable setting not null on columns that already exist...
|
|
39
|
-
|
|
40
|
-
// Adds the "create" query to the query sequence.
|
|
41
|
-
createQuery(columns, ifNot, like) {
|
|
42
|
-
const createStatement = ifNot
|
|
43
|
-
? 'create table if not exists '
|
|
44
|
-
: 'create table ';
|
|
45
|
-
const columnsSql = ' (' + columns.sql.join(', ') + this._addChecks() + ')';
|
|
46
|
-
let sql =
|
|
47
|
-
createStatement +
|
|
48
|
-
this.tableName() +
|
|
49
|
-
(like && this.tableNameLike()
|
|
50
|
-
? ' (like ' + this.tableNameLike() + ')'
|
|
51
|
-
: columnsSql);
|
|
52
|
-
if (this.single.inherits)
|
|
53
|
-
sql += ` like (${this.formatter.wrap(this.single.inherits)})`;
|
|
54
|
-
this.pushQuery({
|
|
55
|
-
sql,
|
|
56
|
-
bindings: columns.bindings,
|
|
57
|
-
});
|
|
58
|
-
const hasComment = has(this.single, 'comment');
|
|
59
|
-
if (hasComment) this.comment(this.single.comment);
|
|
60
|
-
if (like) {
|
|
61
|
-
this.addColumns(columns, this.addColumnsPrefix);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
primary(columns, constraintName) {
|
|
66
|
-
const self = this;
|
|
67
|
-
constraintName = constraintName
|
|
68
|
-
? self.formatter.wrap(constraintName)
|
|
69
|
-
: self.formatter.wrap(`${this.tableNameRaw}_pkey`);
|
|
70
|
-
if (columns.constructor !== Array) {
|
|
71
|
-
columns = [columns];
|
|
72
|
-
}
|
|
73
|
-
const thiscolumns = self.grouped.columns;
|
|
74
|
-
|
|
75
|
-
if (thiscolumns) {
|
|
76
|
-
for (let i = 0; i < columns.length; i++) {
|
|
77
|
-
let exists = thiscolumns.find(
|
|
78
|
-
(tcb) =>
|
|
79
|
-
tcb.grouping === 'columns' &&
|
|
80
|
-
tcb.builder &&
|
|
81
|
-
tcb.builder._method === 'add' &&
|
|
82
|
-
tcb.builder._args &&
|
|
83
|
-
tcb.builder._args.indexOf(columns[i]) > -1
|
|
84
|
-
);
|
|
85
|
-
if (exists) {
|
|
86
|
-
exists = exists.builder;
|
|
87
|
-
}
|
|
88
|
-
const nullable = !(
|
|
89
|
-
exists &&
|
|
90
|
-
exists._modifiers &&
|
|
91
|
-
exists._modifiers['nullable'] &&
|
|
92
|
-
exists._modifiers['nullable'][0] === false
|
|
93
|
-
);
|
|
94
|
-
if (nullable) {
|
|
95
|
-
if (exists) {
|
|
96
|
-
return this.client.logger.warn(
|
|
97
|
-
'Redshift does not allow primary keys to contain nullable columns.'
|
|
98
|
-
);
|
|
99
|
-
} else {
|
|
100
|
-
return this.client.logger.warn(
|
|
101
|
-
'Redshift does not allow primary keys to contain nonexistent columns.'
|
|
102
|
-
);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
return self.pushQuery(
|
|
108
|
-
`alter table ${self.tableName()} add constraint ${constraintName} primary key (${self.formatter.columnize(
|
|
109
|
-
columns
|
|
110
|
-
)})`
|
|
111
|
-
);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
// Compiles column add. Redshift can only add one column per ALTER TABLE, so core addColumns doesn't work. #2545
|
|
115
|
-
addColumns(columns, prefix, colCompilers) {
|
|
116
|
-
if (prefix === this.alterColumnsPrefix) {
|
|
117
|
-
super.addColumns(columns, prefix, colCompilers);
|
|
118
|
-
} else {
|
|
119
|
-
prefix = prefix || this.addColumnsPrefix;
|
|
120
|
-
colCompilers = colCompilers || this.getColumns();
|
|
121
|
-
for (const col of colCompilers) {
|
|
122
|
-
const quotedTableName = this.tableName();
|
|
123
|
-
const colCompiled = col.compileColumn();
|
|
124
|
-
|
|
125
|
-
this.pushQuery({
|
|
126
|
-
sql: `alter table ${quotedTableName} ${prefix}${colCompiled}`,
|
|
127
|
-
bindings: [],
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
module.exports = TableCompiler_Redshift;
|
|
1
|
+
/* eslint max-len: 0 */
|
|
2
|
+
|
|
3
|
+
// Redshift Table Builder & Compiler
|
|
4
|
+
// -------
|
|
5
|
+
|
|
6
|
+
const has = require('lodash/has');
|
|
7
|
+
const TableCompiler_PG = require('../../postgres/schema/pg-tablecompiler');
|
|
8
|
+
|
|
9
|
+
class TableCompiler_Redshift extends TableCompiler_PG {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
index(columns, indexName, options) {
|
|
15
|
+
this.client.logger.warn(
|
|
16
|
+
'Redshift does not support the creation of indexes.'
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
dropIndex(columns, indexName) {
|
|
21
|
+
this.client.logger.warn(
|
|
22
|
+
'Redshift does not support the deletion of indexes.'
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
dropPrimaryIfExists() {
|
|
27
|
+
throw new Error('.dropPrimaryIfExists() is not supported by redshift');
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
dropForeignIfExists() {
|
|
31
|
+
throw new Error('.dropForeignIfExists() is not supported by redshift');
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
dropUniqueIfExists() {
|
|
35
|
+
throw new Error('.dropUniqueIfExists() is not supported by redshift');
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// TODO: have to disable setting not null on columns that already exist...
|
|
39
|
+
|
|
40
|
+
// Adds the "create" query to the query sequence.
|
|
41
|
+
createQuery(columns, ifNot, like) {
|
|
42
|
+
const createStatement = ifNot
|
|
43
|
+
? 'create table if not exists '
|
|
44
|
+
: 'create table ';
|
|
45
|
+
const columnsSql = ' (' + columns.sql.join(', ') + this._addChecks() + ')';
|
|
46
|
+
let sql =
|
|
47
|
+
createStatement +
|
|
48
|
+
this.tableName() +
|
|
49
|
+
(like && this.tableNameLike()
|
|
50
|
+
? ' (like ' + this.tableNameLike() + ')'
|
|
51
|
+
: columnsSql);
|
|
52
|
+
if (this.single.inherits)
|
|
53
|
+
sql += ` like (${this.formatter.wrap(this.single.inherits)})`;
|
|
54
|
+
this.pushQuery({
|
|
55
|
+
sql,
|
|
56
|
+
bindings: columns.bindings,
|
|
57
|
+
});
|
|
58
|
+
const hasComment = has(this.single, 'comment');
|
|
59
|
+
if (hasComment) this.comment(this.single.comment);
|
|
60
|
+
if (like) {
|
|
61
|
+
this.addColumns(columns, this.addColumnsPrefix);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
primary(columns, constraintName) {
|
|
66
|
+
const self = this;
|
|
67
|
+
constraintName = constraintName
|
|
68
|
+
? self.formatter.wrap(constraintName)
|
|
69
|
+
: self.formatter.wrap(`${this.tableNameRaw}_pkey`);
|
|
70
|
+
if (columns.constructor !== Array) {
|
|
71
|
+
columns = [columns];
|
|
72
|
+
}
|
|
73
|
+
const thiscolumns = self.grouped.columns;
|
|
74
|
+
|
|
75
|
+
if (thiscolumns) {
|
|
76
|
+
for (let i = 0; i < columns.length; i++) {
|
|
77
|
+
let exists = thiscolumns.find(
|
|
78
|
+
(tcb) =>
|
|
79
|
+
tcb.grouping === 'columns' &&
|
|
80
|
+
tcb.builder &&
|
|
81
|
+
tcb.builder._method === 'add' &&
|
|
82
|
+
tcb.builder._args &&
|
|
83
|
+
tcb.builder._args.indexOf(columns[i]) > -1
|
|
84
|
+
);
|
|
85
|
+
if (exists) {
|
|
86
|
+
exists = exists.builder;
|
|
87
|
+
}
|
|
88
|
+
const nullable = !(
|
|
89
|
+
exists &&
|
|
90
|
+
exists._modifiers &&
|
|
91
|
+
exists._modifiers['nullable'] &&
|
|
92
|
+
exists._modifiers['nullable'][0] === false
|
|
93
|
+
);
|
|
94
|
+
if (nullable) {
|
|
95
|
+
if (exists) {
|
|
96
|
+
return this.client.logger.warn(
|
|
97
|
+
'Redshift does not allow primary keys to contain nullable columns.'
|
|
98
|
+
);
|
|
99
|
+
} else {
|
|
100
|
+
return this.client.logger.warn(
|
|
101
|
+
'Redshift does not allow primary keys to contain nonexistent columns.'
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return self.pushQuery(
|
|
108
|
+
`alter table ${self.tableName()} add constraint ${constraintName} primary key (${self.formatter.columnize(
|
|
109
|
+
columns
|
|
110
|
+
)})`
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// Compiles column add. Redshift can only add one column per ALTER TABLE, so core addColumns doesn't work. #2545
|
|
115
|
+
addColumns(columns, prefix, colCompilers) {
|
|
116
|
+
if (prefix === this.alterColumnsPrefix) {
|
|
117
|
+
super.addColumns(columns, prefix, colCompilers);
|
|
118
|
+
} else {
|
|
119
|
+
prefix = prefix || this.addColumnsPrefix;
|
|
120
|
+
colCompilers = colCompilers || this.getColumns();
|
|
121
|
+
for (const col of colCompilers) {
|
|
122
|
+
const quotedTableName = this.tableName();
|
|
123
|
+
const colCompiled = col.compileColumn();
|
|
124
|
+
|
|
125
|
+
this.pushQuery({
|
|
126
|
+
sql: `alter table ${quotedTableName} ${prefix}${colCompiled}`,
|
|
127
|
+
bindings: [],
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
module.exports = TableCompiler_Redshift;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
/* eslint max-len: 0 */
|
|
2
|
-
|
|
3
|
-
const ViewCompiler_PG = require('../../postgres/schema/pg-viewcompiler.js');
|
|
4
|
-
|
|
5
|
-
class ViewCompiler_Redshift extends ViewCompiler_PG {
|
|
6
|
-
constructor(client, viewCompiler) {
|
|
7
|
-
super(client, viewCompiler);
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
module.exports = ViewCompiler_Redshift;
|
|
1
|
+
/* eslint max-len: 0 */
|
|
2
|
+
|
|
3
|
+
const ViewCompiler_PG = require('../../postgres/schema/pg-viewcompiler.js');
|
|
4
|
+
|
|
5
|
+
class ViewCompiler_Redshift extends ViewCompiler_PG {
|
|
6
|
+
constructor(client, viewCompiler) {
|
|
7
|
+
super(client, viewCompiler);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
module.exports = ViewCompiler_Redshift;
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
const Transaction = require('../../execution/transaction');
|
|
2
|
-
|
|
3
|
-
module.exports = class Redshift_Transaction extends Transaction {
|
|
4
|
-
begin(conn) {
|
|
5
|
-
const trxMode = [
|
|
6
|
-
this.isolationLevel ? `ISOLATION LEVEL ${this.isolationLevel}` : '',
|
|
7
|
-
this.readOnly ? 'READ ONLY' : '',
|
|
8
|
-
]
|
|
9
|
-
.join(' ')
|
|
10
|
-
.trim();
|
|
11
|
-
|
|
12
|
-
if (trxMode.length === 0) {
|
|
13
|
-
return this.query(conn, 'BEGIN;');
|
|
14
|
-
}
|
|
15
|
-
return this.query(conn, `BEGIN ${trxMode};`);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
savepoint(conn) {
|
|
19
|
-
this.trxClient.logger('Redshift does not support savepoints.');
|
|
20
|
-
return Promise.resolve();
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
release(conn, value) {
|
|
24
|
-
this.trxClient.logger('Redshift does not support savepoints.');
|
|
25
|
-
return Promise.resolve();
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
rollbackTo(conn, error) {
|
|
29
|
-
this.trxClient.logger('Redshift does not support savepoints.');
|
|
30
|
-
return Promise.resolve();
|
|
31
|
-
}
|
|
32
|
-
};
|
|
1
|
+
const Transaction = require('../../execution/transaction');
|
|
2
|
+
|
|
3
|
+
module.exports = class Redshift_Transaction extends Transaction {
|
|
4
|
+
begin(conn) {
|
|
5
|
+
const trxMode = [
|
|
6
|
+
this.isolationLevel ? `ISOLATION LEVEL ${this.isolationLevel}` : '',
|
|
7
|
+
this.readOnly ? 'READ ONLY' : '',
|
|
8
|
+
]
|
|
9
|
+
.join(' ')
|
|
10
|
+
.trim();
|
|
11
|
+
|
|
12
|
+
if (trxMode.length === 0) {
|
|
13
|
+
return this.query(conn, 'BEGIN;');
|
|
14
|
+
}
|
|
15
|
+
return this.query(conn, `BEGIN ${trxMode};`);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
savepoint(conn) {
|
|
19
|
+
this.trxClient.logger('Redshift does not support savepoints.');
|
|
20
|
+
return Promise.resolve();
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
release(conn, value) {
|
|
24
|
+
this.trxClient.logger('Redshift does not support savepoints.');
|
|
25
|
+
return Promise.resolve();
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
rollbackTo(conn, error) {
|
|
29
|
+
this.trxClient.logger('Redshift does not support savepoints.');
|
|
30
|
+
return Promise.resolve();
|
|
31
|
+
}
|
|
32
|
+
};
|