knex 2.4.2 → 2.5.0

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 (190) hide show
  1. package/CHANGELOG.md +54 -18
  2. package/CONTRIBUTING.md +194 -194
  3. package/LICENSE +22 -22
  4. package/README.md +147 -148
  5. package/UPGRADING.md +233 -233
  6. package/bin/cli.js +473 -473
  7. package/bin/utils/cli-config-utils.js +210 -210
  8. package/bin/utils/constants.js +7 -7
  9. package/bin/utils/migrationsLister.js +37 -37
  10. package/knex.js +23 -23
  11. package/knex.mjs +11 -0
  12. package/lib/builder-interface-augmenter.js +120 -120
  13. package/lib/client.js +495 -475
  14. package/lib/constants.js +61 -61
  15. package/lib/dialects/better-sqlite3/index.js +77 -72
  16. package/lib/dialects/cockroachdb/crdb-columncompiler.js +14 -14
  17. package/lib/dialects/cockroachdb/crdb-querybuilder.js +11 -11
  18. package/lib/dialects/cockroachdb/crdb-querycompiler.js +122 -122
  19. package/lib/dialects/cockroachdb/crdb-tablecompiler.js +37 -37
  20. package/lib/dialects/cockroachdb/crdb-viewcompiler.js +15 -15
  21. package/lib/dialects/cockroachdb/index.js +86 -86
  22. package/lib/dialects/index.js +33 -33
  23. package/lib/dialects/mssql/index.js +500 -495
  24. package/lib/dialects/mssql/mssql-formatter.js +34 -34
  25. package/lib/dialects/mssql/query/mssql-querycompiler.js +601 -600
  26. package/lib/dialects/mssql/schema/mssql-columncompiler.js +185 -185
  27. package/lib/dialects/mssql/schema/mssql-compiler.js +91 -91
  28. package/lib/dialects/mssql/schema/mssql-tablecompiler.js +378 -378
  29. package/lib/dialects/mssql/schema/mssql-viewcompiler.js +55 -55
  30. package/lib/dialects/mssql/transaction.js +176 -176
  31. package/lib/dialects/mysql/index.js +201 -201
  32. package/lib/dialects/mysql/query/mysql-querycompiler.js +274 -274
  33. package/lib/dialects/mysql/schema/mysql-columncompiler.js +193 -193
  34. package/lib/dialects/mysql/schema/mysql-compiler.js +60 -60
  35. package/lib/dialects/mysql/schema/mysql-tablecompiler.js +381 -381
  36. package/lib/dialects/mysql/schema/mysql-viewbuilder.js +21 -21
  37. package/lib/dialects/mysql/schema/mysql-viewcompiler.js +15 -15
  38. package/lib/dialects/mysql/transaction.js +46 -46
  39. package/lib/dialects/mysql2/index.js +53 -33
  40. package/lib/dialects/mysql2/transaction.js +44 -44
  41. package/lib/dialects/oracle/DEAD_CODE.md +5 -5
  42. package/lib/dialects/oracle/index.js +92 -92
  43. package/lib/dialects/oracle/query/oracle-querycompiler.js +343 -342
  44. package/lib/dialects/oracle/schema/internal/incrementUtils.js +20 -20
  45. package/lib/dialects/oracle/schema/internal/trigger.js +135 -135
  46. package/lib/dialects/oracle/schema/oracle-columnbuilder.js +17 -17
  47. package/lib/dialects/oracle/schema/oracle-columncompiler.js +126 -126
  48. package/lib/dialects/oracle/schema/oracle-compiler.js +122 -122
  49. package/lib/dialects/oracle/schema/oracle-tablecompiler.js +190 -190
  50. package/lib/dialects/oracle/utils.js +87 -87
  51. package/lib/dialects/oracledb/index.js +327 -327
  52. package/lib/dialects/oracledb/query/oracledb-querycompiler.js +481 -481
  53. package/lib/dialects/oracledb/schema/oracledb-columncompiler.js +61 -55
  54. package/lib/dialects/oracledb/schema/oracledb-tablecompiler.js +19 -19
  55. package/lib/dialects/oracledb/schema/oracledb-viewbuilder.js +13 -13
  56. package/lib/dialects/oracledb/schema/oracledb-viewcompiler.js +19 -19
  57. package/lib/dialects/oracledb/transaction.js +98 -98
  58. package/lib/dialects/oracledb/utils.js +208 -208
  59. package/lib/dialects/pgnative/index.js +60 -60
  60. package/lib/dialects/postgres/execution/pg-transaction.js +19 -12
  61. package/lib/dialects/postgres/index.js +358 -358
  62. package/lib/dialects/postgres/query/pg-querybuilder.js +43 -38
  63. package/lib/dialects/postgres/query/pg-querycompiler.js +400 -395
  64. package/lib/dialects/postgres/schema/pg-columncompiler.js +156 -156
  65. package/lib/dialects/postgres/schema/pg-compiler.js +138 -138
  66. package/lib/dialects/postgres/schema/pg-tablecompiler.js +304 -299
  67. package/lib/dialects/postgres/schema/pg-viewbuilder.js +21 -21
  68. package/lib/dialects/postgres/schema/pg-viewcompiler.js +35 -35
  69. package/lib/dialects/redshift/index.js +86 -86
  70. package/lib/dialects/redshift/query/redshift-querycompiler.js +163 -163
  71. package/lib/dialects/redshift/schema/redshift-columnbuilder.js +22 -22
  72. package/lib/dialects/redshift/schema/redshift-columncompiler.js +67 -67
  73. package/lib/dialects/redshift/schema/redshift-compiler.js +14 -14
  74. package/lib/dialects/redshift/schema/redshift-tablecompiler.js +122 -122
  75. package/lib/dialects/redshift/schema/redshift-viewcompiler.js +11 -11
  76. package/lib/dialects/redshift/transaction.js +32 -25
  77. package/lib/dialects/sqlite3/execution/sqlite-transaction.js +25 -18
  78. package/lib/dialects/sqlite3/index.js +250 -250
  79. package/lib/dialects/sqlite3/query/sqlite-querybuilder.js +33 -33
  80. package/lib/dialects/sqlite3/query/sqlite-querycompiler.js +334 -334
  81. package/lib/dialects/sqlite3/schema/ddl.js +400 -400
  82. package/lib/dialects/sqlite3/schema/internal/compiler.js +327 -327
  83. package/lib/dialects/sqlite3/schema/internal/parser-combinator.js +161 -161
  84. package/lib/dialects/sqlite3/schema/internal/parser.js +638 -638
  85. package/lib/dialects/sqlite3/schema/internal/sqlite-ddl-operations.js +41 -41
  86. package/lib/dialects/sqlite3/schema/internal/tokenizer.js +38 -38
  87. package/lib/dialects/sqlite3/schema/internal/utils.js +12 -12
  88. package/lib/dialects/sqlite3/schema/sqlite-columncompiler.js +50 -50
  89. package/lib/dialects/sqlite3/schema/sqlite-compiler.js +80 -80
  90. package/lib/dialects/sqlite3/schema/sqlite-tablecompiler.js +347 -347
  91. package/lib/dialects/sqlite3/schema/sqlite-viewcompiler.js +40 -40
  92. package/lib/execution/batch-insert.js +51 -51
  93. package/lib/execution/internal/delay.js +6 -6
  94. package/lib/execution/internal/ensure-connection-callback.js +41 -41
  95. package/lib/execution/internal/query-executioner.js +62 -62
  96. package/lib/execution/runner.js +325 -307
  97. package/lib/execution/transaction.js +409 -401
  98. package/lib/formatter/formatterUtils.js +42 -42
  99. package/lib/formatter/rawFormatter.js +84 -84
  100. package/lib/formatter/wrappingFormatter.js +250 -250
  101. package/lib/formatter.js +25 -25
  102. package/lib/index.js +3 -3
  103. package/lib/knex-builder/FunctionHelper.js +80 -54
  104. package/lib/knex-builder/Knex.js +59 -59
  105. package/lib/knex-builder/internal/config-resolver.js +57 -57
  106. package/lib/knex-builder/internal/parse-connection.js +87 -87
  107. package/lib/knex-builder/make-knex.js +345 -340
  108. package/lib/logger.js +76 -76
  109. package/lib/migrations/common/MigrationsLoader.js +36 -36
  110. package/lib/migrations/migrate/MigrationGenerator.js +84 -84
  111. package/lib/migrations/migrate/Migrator.js +598 -598
  112. package/lib/migrations/migrate/migrate-stub.js +17 -17
  113. package/lib/migrations/migrate/migration-list-resolver.js +33 -33
  114. package/lib/migrations/migrate/migrator-configuration-merger.js +58 -58
  115. package/lib/migrations/migrate/sources/fs-migrations.js +74 -74
  116. package/lib/migrations/migrate/stub/cjs.stub +15 -15
  117. package/lib/migrations/migrate/stub/coffee.stub +13 -13
  118. package/lib/migrations/migrate/stub/eg.stub +14 -14
  119. package/lib/migrations/migrate/stub/js-schema.stub +22 -22
  120. package/lib/migrations/migrate/stub/js.stub +22 -22
  121. package/lib/migrations/migrate/stub/knexfile-coffee.stub +34 -34
  122. package/lib/migrations/migrate/stub/knexfile-eg.stub +43 -43
  123. package/lib/migrations/migrate/stub/knexfile-js.stub +47 -47
  124. package/lib/migrations/migrate/stub/knexfile-ls.stub +35 -35
  125. package/lib/migrations/migrate/stub/knexfile-ts.stub +47 -47
  126. package/lib/migrations/migrate/stub/ls.stub +14 -14
  127. package/lib/migrations/migrate/stub/mjs.stub +23 -23
  128. package/lib/migrations/migrate/stub/ts-schema.stub +21 -21
  129. package/lib/migrations/migrate/stub/ts.stub +21 -21
  130. package/lib/migrations/migrate/table-creator.js +77 -77
  131. package/lib/migrations/migrate/table-resolver.js +27 -27
  132. package/lib/migrations/seed/Seeder.js +137 -137
  133. package/lib/migrations/seed/seed-stub.js +13 -13
  134. package/lib/migrations/seed/seeder-configuration-merger.js +60 -60
  135. package/lib/migrations/seed/sources/fs-seeds.js +65 -65
  136. package/lib/migrations/seed/stub/coffee.stub +9 -9
  137. package/lib/migrations/seed/stub/eg.stub +11 -11
  138. package/lib/migrations/seed/stub/js.stub +13 -13
  139. package/lib/migrations/seed/stub/ls.stub +11 -11
  140. package/lib/migrations/seed/stub/mjs.stub +12 -12
  141. package/lib/migrations/seed/stub/ts.stub +13 -13
  142. package/lib/migrations/util/fs.js +86 -86
  143. package/lib/migrations/util/import-file.js +12 -12
  144. package/lib/migrations/util/is-module-type.js +9 -9
  145. package/lib/migrations/util/template.js +52 -52
  146. package/lib/migrations/util/timestamp.js +14 -14
  147. package/lib/query/analytic.js +52 -52
  148. package/lib/query/constants.js +15 -15
  149. package/lib/query/joinclause.js +270 -270
  150. package/lib/query/method-constants.js +136 -135
  151. package/lib/query/querybuilder.js +1793 -1794
  152. package/lib/query/querycompiler.js +1591 -1580
  153. package/lib/raw.js +139 -139
  154. package/lib/ref.js +39 -39
  155. package/lib/schema/builder.js +115 -115
  156. package/lib/schema/columnbuilder.js +146 -146
  157. package/lib/schema/columncompiler.js +307 -307
  158. package/lib/schema/compiler.js +187 -187
  159. package/lib/schema/internal/helpers.js +55 -55
  160. package/lib/schema/tablebuilder.js +376 -376
  161. package/lib/schema/tablecompiler.js +433 -433
  162. package/lib/schema/viewbuilder.js +92 -92
  163. package/lib/schema/viewcompiler.js +138 -138
  164. package/lib/util/finally-mixin.js +13 -13
  165. package/lib/util/helpers.js +95 -95
  166. package/lib/util/is.js +32 -32
  167. package/lib/util/nanoid.js +40 -40
  168. package/lib/util/noop.js +1 -1
  169. package/lib/util/save-async-stack.js +14 -14
  170. package/lib/util/security.js +26 -0
  171. package/lib/util/string.js +190 -190
  172. package/lib/util/timeout.js +29 -29
  173. package/package.json +12 -10
  174. package/scripts/build.js +125 -125
  175. package/scripts/clean.js +31 -31
  176. package/scripts/docker-compose.yml +152 -152
  177. package/scripts/next-release-howto.md +24 -24
  178. package/scripts/oracledb-install-driver-libs.sh +82 -82
  179. package/scripts/release.sh +34 -34
  180. package/scripts/runkit-example.js +34 -34
  181. package/scripts/stress-test/README.txt +18 -18
  182. package/scripts/stress-test/docker-compose.yml +57 -57
  183. package/scripts/stress-test/knex-stress-test.js +208 -208
  184. package/scripts/stress-test/mysql2-random-hanging-every-now-and-then.js +145 -145
  185. package/scripts/stress-test/mysql2-sudden-exit-without-error.js +100 -100
  186. package/scripts/stress-test/reconnect-test-mysql-based-drivers.js +184 -184
  187. package/scripts/update_gitignore_for_tsc_output.js +90 -90
  188. package/types/index.d.ts +3273 -3233
  189. package/types/result.d.ts +27 -27
  190. package/types/tables.d.ts +4 -4
@@ -1,152 +1,152 @@
1
- version: '3'
2
-
3
- services:
4
- mssql:
5
- image: mcr.microsoft.com/mssql/server:2019-latest
6
- ports:
7
- - '21433:1433'
8
- environment:
9
- - ACCEPT_EULA=Y
10
- - SA_PASSWORD=S0meVeryHardPassword
11
- healthcheck:
12
- test: /opt/mssql-tools/bin/sqlcmd -S mssql -U sa -P 'S0meVeryHardPassword' -Q 'select 1'
13
- waitmssql:
14
- image: mcr.microsoft.com/mssql/server:2017-latest
15
- links:
16
- - mssql
17
- depends_on:
18
- - mssql
19
- entrypoint:
20
- - bash
21
- - -c
22
- # https://docs.microsoft.com/en-us/sql/relational-databases/logs/control-transaction-durability?view=sql-server-ver15#bkmk_DbControl
23
- - 'until /opt/mssql-tools/bin/sqlcmd -S mssql -U sa -P S0meVeryHardPassword -d master -Q "CREATE DATABASE knex_test; ALTER DATABASE knex_test SET ALLOW_SNAPSHOT_ISOLATION ON; ALTER DATABASE knex_test SET DELAYED_DURABILITY = FORCED"; do sleep 5; done'
24
-
25
- mysql:
26
- image: mysql
27
- # https://dev.mysql.com/doc/refman/8.0/en/mysql-acid.html
28
- # https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_flush_method
29
- # nosync only for unix, edit for local start on other systems
30
- command: --default-authentication-plugin=mysql_native_password --sync_binlog=0 --innodb_doublewrite=OFF --innodb-flush-log-at-trx-commit=0 --innodb-flush-method=nosync
31
- ports:
32
- - '23306:3306'
33
- environment:
34
- - MYSQL_ROOT_PASSWORD=testrootpassword
35
- - MYSQL_DATABASE=knex_test
36
- - MYSQL_USER=testuser
37
- - MYSQL_PASSWORD=testpassword
38
- healthcheck:
39
- test:
40
- [
41
- 'CMD',
42
- '/usr/bin/mysql',
43
- '-hlocalhost',
44
- '-utestuser',
45
- '-ptestpassword',
46
- '-e',
47
- 'SELECT 1',
48
- ]
49
- interval: 30s
50
- timeout: 5s
51
- retries: 3
52
- restart: always
53
- volumes:
54
- - mysql_data:/var/lib/mysql
55
- waitmysql:
56
- image: mysql
57
- links:
58
- - mysql
59
- depends_on:
60
- - mysql
61
- entrypoint:
62
- - bash
63
- - -c
64
- - 'until /usr/bin/mysql -hmysql -utestuser -ptestpassword -e "SELECT 1"; do sleep 5; done'
65
-
66
- postgres:
67
- image: postgres:13-alpine
68
- # see https://www.postgresql.org/docs/current/non-durability.html
69
- command: '-c full_page_writes=off -c fsync=off -c synchronous_commit=off'
70
- ports:
71
- - '25432:5432'
72
- environment:
73
- - POSTGRES_USER=testuser
74
- - POSTGRES_PASSWORD=knextest
75
- - POSTGRES_DB=knex_test
76
- waitpostgres:
77
- image: postgres:13-alpine
78
- links:
79
- - postgres
80
- depends_on:
81
- - postgres
82
- entrypoint:
83
- - bash
84
- - -c
85
- - 'until /usr/local/bin/psql postgres://testuser:knextest@postgres/knex_test -c "SELECT 1"; do sleep 5; done'
86
-
87
- cockroachdb:
88
- image: cockroachdb/cockroach:latest-v21.2
89
- container_name: crdb
90
- hostname: crdb
91
- command: start-single-node --cluster-name=example-single-node --insecure
92
- ports:
93
- - "26257:26257"
94
- - "8080:8080"
95
-
96
- waitcockroachdb:
97
- container_name: crdb-init
98
- hostname: crdb-init
99
- image: timveil/cockroachdb-remote-client:latest
100
- environment:
101
- - COCKROACH_HOST=crdb:26257
102
- - COCKROACH_INSECURE=true
103
- - DATABASE_NAME=test
104
- depends_on:
105
- - cockroachdb
106
-
107
- pgnative:
108
- image: postgres:13-alpine
109
- # see https://www.postgresql.org/docs/current/non-durability.html
110
- command: '-c full_page_writes=off -c fsync=off -c synchronous_commit=off'
111
- ports:
112
- - '25433:5432'
113
- environment:
114
- - POSTGRES_USER=testuser
115
- - POSTGRES_PASSWORD=knextest
116
- - POSTGRES_DB=knex_test
117
- waitpgnative:
118
- image: postgres:13-alpine
119
- links:
120
- - pgnative
121
- depends_on:
122
- - pgnative
123
- entrypoint:
124
- - bash
125
- - -c
126
- - 'until /usr/local/bin/psql postgres://testuser:knextest@pgnative/knex_test -c "SELECT 1"; do sleep 5; done'
127
-
128
- oracledb:
129
- image: quillbuilduser/oracle-18-xe
130
- container_name: oracledb_container
131
- ports:
132
- - '21521:1521'
133
- environment:
134
- - ORACLE_ALLOW_REMOTE=true
135
- waitoracledb:
136
- image: quillbuilduser/oracle-18-xe
137
- links:
138
- - oracledb
139
- depends_on:
140
- - oracledb
141
- environment:
142
- - ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE
143
- entrypoint:
144
- - bash
145
- - -c
146
- - 'until /opt/oracle/product/18c/dbhomeXE/bin/sqlplus -s sys/Oracle18@oracledb/XE as sysdba <<< "SELECT 13376411 FROM DUAL; exit;" | grep "13376411"; do echo "Could not connect to oracle... sleep for a while"; sleep 5; done'
147
-
148
- volumes:
149
- mysql_data:
150
- driver_opts:
151
- type: tmpfs
152
- device: tmpfs
1
+ version: '3'
2
+
3
+ services:
4
+ mssql:
5
+ image: mcr.microsoft.com/mssql/server:2019-latest
6
+ ports:
7
+ - '21433:1433'
8
+ environment:
9
+ - ACCEPT_EULA=Y
10
+ - SA_PASSWORD=S0meVeryHardPassword
11
+ healthcheck:
12
+ test: /opt/mssql-tools/bin/sqlcmd -S mssql -U sa -P 'S0meVeryHardPassword' -Q 'select 1'
13
+ waitmssql:
14
+ image: mcr.microsoft.com/mssql/server:2017-latest
15
+ links:
16
+ - mssql
17
+ depends_on:
18
+ - mssql
19
+ entrypoint:
20
+ - bash
21
+ - -c
22
+ # https://docs.microsoft.com/en-us/sql/relational-databases/logs/control-transaction-durability?view=sql-server-ver15#bkmk_DbControl
23
+ - 'until /opt/mssql-tools/bin/sqlcmd -S mssql -U sa -P S0meVeryHardPassword -d master -Q "CREATE DATABASE knex_test; ALTER DATABASE knex_test SET ALLOW_SNAPSHOT_ISOLATION ON; ALTER DATABASE knex_test SET DELAYED_DURABILITY = FORCED"; do sleep 5; done'
24
+
25
+ mysql:
26
+ image: mysql
27
+ # https://dev.mysql.com/doc/refman/8.0/en/mysql-acid.html
28
+ # https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_flush_method
29
+ # nosync only for unix, edit for local start on other systems
30
+ command: --default-authentication-plugin=mysql_native_password --sync_binlog=0 --innodb_doublewrite=OFF --innodb-flush-log-at-trx-commit=0 --innodb-flush-method=nosync
31
+ ports:
32
+ - '23306:3306'
33
+ environment:
34
+ - MYSQL_ROOT_PASSWORD=testrootpassword
35
+ - MYSQL_DATABASE=knex_test
36
+ - MYSQL_USER=testuser
37
+ - MYSQL_PASSWORD=testpassword
38
+ healthcheck:
39
+ test:
40
+ [
41
+ 'CMD',
42
+ '/usr/bin/mysql',
43
+ '-hlocalhost',
44
+ '-utestuser',
45
+ '-ptestpassword',
46
+ '-e',
47
+ 'SELECT 1',
48
+ ]
49
+ interval: 30s
50
+ timeout: 5s
51
+ retries: 3
52
+ restart: always
53
+ volumes:
54
+ - mysql_data:/var/lib/mysql
55
+ waitmysql:
56
+ image: mysql
57
+ links:
58
+ - mysql
59
+ depends_on:
60
+ - mysql
61
+ entrypoint:
62
+ - bash
63
+ - -c
64
+ - 'until /usr/bin/mysql -hmysql -utestuser -ptestpassword -e "SELECT 1"; do sleep 5; done'
65
+
66
+ postgres:
67
+ image: postgres:13-alpine
68
+ # see https://www.postgresql.org/docs/current/non-durability.html
69
+ command: '-c full_page_writes=off -c fsync=off -c synchronous_commit=off'
70
+ ports:
71
+ - '25432:5432'
72
+ environment:
73
+ - POSTGRES_USER=testuser
74
+ - POSTGRES_PASSWORD=knextest
75
+ - POSTGRES_DB=knex_test
76
+ waitpostgres:
77
+ image: postgres:13-alpine
78
+ links:
79
+ - postgres
80
+ depends_on:
81
+ - postgres
82
+ entrypoint:
83
+ - bash
84
+ - -c
85
+ - 'until /usr/local/bin/psql postgres://testuser:knextest@postgres/knex_test -c "SELECT 1"; do sleep 5; done'
86
+
87
+ cockroachdb:
88
+ image: cockroachdb/cockroach:latest-v21.2
89
+ container_name: crdb
90
+ hostname: crdb
91
+ command: start-single-node --cluster-name=example-single-node --insecure
92
+ ports:
93
+ - "26257:26257"
94
+ - "8080:8080"
95
+
96
+ waitcockroachdb:
97
+ container_name: crdb-init
98
+ hostname: crdb-init
99
+ image: timveil/cockroachdb-remote-client:latest
100
+ environment:
101
+ - COCKROACH_HOST=crdb:26257
102
+ - COCKROACH_INSECURE=true
103
+ - DATABASE_NAME=test
104
+ depends_on:
105
+ - cockroachdb
106
+
107
+ pgnative:
108
+ image: postgres:13-alpine
109
+ # see https://www.postgresql.org/docs/current/non-durability.html
110
+ command: '-c full_page_writes=off -c fsync=off -c synchronous_commit=off'
111
+ ports:
112
+ - '25433:5432'
113
+ environment:
114
+ - POSTGRES_USER=testuser
115
+ - POSTGRES_PASSWORD=knextest
116
+ - POSTGRES_DB=knex_test
117
+ waitpgnative:
118
+ image: postgres:13-alpine
119
+ links:
120
+ - pgnative
121
+ depends_on:
122
+ - pgnative
123
+ entrypoint:
124
+ - bash
125
+ - -c
126
+ - 'until /usr/local/bin/psql postgres://testuser:knextest@pgnative/knex_test -c "SELECT 1"; do sleep 5; done'
127
+
128
+ oracledb:
129
+ image: quillbuilduser/oracle-18-xe
130
+ container_name: oracledb_container
131
+ ports:
132
+ - '21521:1521'
133
+ environment:
134
+ - ORACLE_ALLOW_REMOTE=true
135
+ waitoracledb:
136
+ image: quillbuilduser/oracle-18-xe
137
+ links:
138
+ - oracledb
139
+ depends_on:
140
+ - oracledb
141
+ environment:
142
+ - ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE
143
+ entrypoint:
144
+ - bash
145
+ - -c
146
+ - 'until /opt/oracle/product/18c/dbhomeXE/bin/sqlplus -s sys/Oracle18@oracledb/XE as sysdba <<< "SELECT 13376411 FROM DUAL; exit;" | grep "13376411"; do echo "Could not connect to oracle... sleep for a while"; sleep 5; done'
147
+
148
+ volumes:
149
+ mysql_data:
150
+ driver_opts:
151
+ type: tmpfs
152
+ device: tmpfs
@@ -1,24 +1,24 @@
1
- # Checklist for crating knex @next releases
2
-
3
- 1. Go through all commits since the last release and add them to CHANGELOG.md under unreleased changes section.
4
- 2. Commit changes to CHANGELOG
5
- 3. Check that master compiles and tests are running fine (check also that CI tests are passing)
6
-
7
- ```sh
8
- npm run build
9
-
10
- # run bunch of tests, but skipping coverage which doesn't really work locally at least
11
- npm plaintest
12
- npm bin_test
13
- npm oracledb:test
14
- npm mssql:init
15
- npm mssql:test
16
- npm mssql:destroy
17
- ```
18
-
19
- 4. Update package.json version to be e.g. 0.16.0-next1 or 0.16.0-next2 and commit yo master
20
- 5. Publish it under @next tag
21
-
22
- ```sh
23
- npm publish --tag next
24
- ```
1
+ # Checklist for crating knex @next releases
2
+
3
+ 1. Go through all commits since the last release and add them to CHANGELOG.md under unreleased changes section.
4
+ 2. Commit changes to CHANGELOG
5
+ 3. Check that master compiles and tests are running fine (check also that CI tests are passing)
6
+
7
+ ```sh
8
+ npm run build
9
+
10
+ # run bunch of tests, but skipping coverage which doesn't really work locally at least
11
+ npm plaintest
12
+ npm bin_test
13
+ npm oracledb:test
14
+ npm mssql:init
15
+ npm mssql:test
16
+ npm mssql:destroy
17
+ ```
18
+
19
+ 4. Update package.json version to be e.g. 0.16.0-next1 or 0.16.0-next2 and commit yo master
20
+ 5. Publish it under @next tag
21
+
22
+ ```sh
23
+ npm publish --tag next
24
+ ```
@@ -1,82 +1,82 @@
1
- #!/usr/bin/env bash
2
-
3
- # Exit on error
4
- set -e
5
-
6
- # Directory constants
7
- repo_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )/.." >/dev/null 2>&1 && pwd )"
8
- exec_dir="$( pwd )"
9
- script_dir="$repo_dir/scripts/"
10
- docker_compose_file="$repo_dir/scripts/docker-compose.yml"
11
-
12
- help_text="
13
- Helper script to install oracle drivers on local linux machine from Oracle
14
- database container.
15
-
16
- oracledb-install-driver-libs.sh COMMAND
17
-
18
- COMMAND:
19
- run: Do the driver install.
20
- dry-run: Do the driver install but do not save any files.
21
- help: Print this menu.
22
-
23
- NOTES FOR USAGE:
24
- 1. This script is tested to work on Ubuntu 18.04 LTS.
25
- 2. This script requires you to have sudo capabilities so to use ldconfig.
26
- "
27
-
28
- # Main script logic
29
- cmd="$1"
30
-
31
- function main () {
32
- case "$1" in
33
- "run")
34
- printf "Starting run ...\n"
35
- do_install true
36
- exit 0
37
- ;;
38
- "dry-run")
39
- printf "Starting dry-run ...\n"
40
- do_install false
41
- exit 0
42
- ;;
43
- "help"|"--help"|"-h"|"")
44
- printf "$help_text"
45
- exit 0
46
- ;;
47
- *)
48
- printf "Unsupported command: $cmd\n"
49
- printf "Try running with 'help' to see supported commands.\n"
50
- exit 1
51
- ;;
52
- esac
53
- }
54
-
55
- function do_install () {
56
- do_changes="$1"
57
- printf "\nEnsuring oracle containers from docker-compose are up ...\n"
58
- docker-compose -f "$docker_compose_file" up --build -d oracledb
59
- docker-compose -f "$docker_compose_file" up waitoracledb
60
- printf "\nSleeping an extra 15 seconds to ensure oracle has fully started ...\n"
61
- sleep 15
62
- printf "\nInstalling oracle client libs to db container ...\n"
63
- set -x
64
- docker-compose -f "$docker_compose_file" exec -T oracledb curl http://yum.oracle.com/public-yum-ol7.repo -o /etc/yum.repos.d/public-yum-ol7.repo
65
- docker-compose -f "$docker_compose_file" exec -T oracledb yum install -y yum-utils
66
- docker-compose -f "$docker_compose_file" exec -T oracledb yum-config-manager --enable ol7_oracle_instantclient
67
- docker-compose -f "$docker_compose_file" exec -T oracledb yum install -y oracle-instantclient18.3-basiclite
68
- set +x
69
- printf "\nCopying to host's ~/lib directory and adding to ldconfig ...\n"
70
- if [ "$do_changes" = "true" ]; then
71
- set -x
72
- docker cp oracledb_container:/usr/lib/oracle/18.3/client64/lib/ ~/
73
- sudo sh -c "echo $HOME/lib > /etc/ld.so.conf.d/oracle-instantclient.conf"
74
- sudo ldconfig
75
- set +x
76
- else
77
- printf "(skipping because dry-run)\n"
78
- fi
79
- }
80
-
81
- # Start the bash app's main function
82
- main "$cmd"
1
+ #!/usr/bin/env bash
2
+
3
+ # Exit on error
4
+ set -e
5
+
6
+ # Directory constants
7
+ repo_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )/.." >/dev/null 2>&1 && pwd )"
8
+ exec_dir="$( pwd )"
9
+ script_dir="$repo_dir/scripts/"
10
+ docker_compose_file="$repo_dir/scripts/docker-compose.yml"
11
+
12
+ help_text="
13
+ Helper script to install oracle drivers on local linux machine from Oracle
14
+ database container.
15
+
16
+ oracledb-install-driver-libs.sh COMMAND
17
+
18
+ COMMAND:
19
+ run: Do the driver install.
20
+ dry-run: Do the driver install but do not save any files.
21
+ help: Print this menu.
22
+
23
+ NOTES FOR USAGE:
24
+ 1. This script is tested to work on Ubuntu 18.04 LTS.
25
+ 2. This script requires you to have sudo capabilities so to use ldconfig.
26
+ "
27
+
28
+ # Main script logic
29
+ cmd="$1"
30
+
31
+ function main () {
32
+ case "$1" in
33
+ "run")
34
+ printf "Starting run ...\n"
35
+ do_install true
36
+ exit 0
37
+ ;;
38
+ "dry-run")
39
+ printf "Starting dry-run ...\n"
40
+ do_install false
41
+ exit 0
42
+ ;;
43
+ "help"|"--help"|"-h"|"")
44
+ printf "$help_text"
45
+ exit 0
46
+ ;;
47
+ *)
48
+ printf "Unsupported command: $cmd\n"
49
+ printf "Try running with 'help' to see supported commands.\n"
50
+ exit 1
51
+ ;;
52
+ esac
53
+ }
54
+
55
+ function do_install () {
56
+ do_changes="$1"
57
+ printf "\nEnsuring oracle containers from docker-compose are up ...\n"
58
+ docker-compose -f "$docker_compose_file" up --build -d oracledb
59
+ docker-compose -f "$docker_compose_file" up waitoracledb
60
+ printf "\nSleeping an extra 15 seconds to ensure oracle has fully started ...\n"
61
+ sleep 15
62
+ printf "\nInstalling oracle client libs to db container ...\n"
63
+ set -x
64
+ docker-compose -f "$docker_compose_file" exec -T oracledb curl http://yum.oracle.com/public-yum-ol7.repo -o /etc/yum.repos.d/public-yum-ol7.repo
65
+ docker-compose -f "$docker_compose_file" exec -T oracledb yum install -y yum-utils
66
+ docker-compose -f "$docker_compose_file" exec -T oracledb yum-config-manager --enable ol7_oracle_instantclient
67
+ docker-compose -f "$docker_compose_file" exec -T oracledb yum install -y oracle-instantclient18.3-basiclite
68
+ set +x
69
+ printf "\nCopying to host's ~/lib directory and adding to ldconfig ...\n"
70
+ if [ "$do_changes" = "true" ]; then
71
+ set -x
72
+ docker cp oracledb_container:/usr/lib/oracle/18.3/client64/lib/ ~/
73
+ sudo sh -c "echo $HOME/lib > /etc/ld.so.conf.d/oracle-instantclient.conf"
74
+ sudo ldconfig
75
+ set +x
76
+ else
77
+ printf "(skipping because dry-run)\n"
78
+ fi
79
+ }
80
+
81
+ # Start the bash app's main function
82
+ main "$cmd"
@@ -1,34 +1,34 @@
1
- #!/bin/bash -e
2
-
3
- changelog=node_modules/.bin/changelog
4
-
5
- update_version() {
6
- echo "$(node -p "p=require('./${1}');p.version='${2}';JSON.stringify(p,null,2)")" > $1
7
- echo "Updated ${1} version to ${2}"
8
- }
9
-
10
- current_version=$(node -p "require('./package').version")
11
-
12
- printf "Next version (current is $current_version)? "
13
- read next_version
14
-
15
- if ! [[ $next_version =~ ^[0-9]\.[0-9]+\.[0-9](-.+)? ]]; then
16
- echo "Version must be a valid semver string, e.g. 1.0.2 or 2.3.0-beta.1"
17
- exit 1
18
- fi
19
-
20
- next_ref="v$next_version"
21
-
22
- git add -u
23
-
24
- npm run build
25
- npm test
26
-
27
- update_version 'package.json' $next_version
28
-
29
- git commit -am "release $next_version"
30
- git tag $next_version
31
-
32
- git push --tags
33
-
34
- npm publish
1
+ #!/bin/bash -e
2
+
3
+ changelog=node_modules/.bin/changelog
4
+
5
+ update_version() {
6
+ echo "$(node -p "p=require('./${1}');p.version='${2}';JSON.stringify(p,null,2)")" > $1
7
+ echo "Updated ${1} version to ${2}"
8
+ }
9
+
10
+ current_version=$(node -p "require('./package').version")
11
+
12
+ printf "Next version (current is $current_version)? "
13
+ read next_version
14
+
15
+ if ! [[ $next_version =~ ^[0-9]\.[0-9]+\.[0-9](-.+)? ]]; then
16
+ echo "Version must be a valid semver string, e.g. 1.0.2 or 2.3.0-beta.1"
17
+ exit 1
18
+ fi
19
+
20
+ next_ref="v$next_version"
21
+
22
+ git add -u
23
+
24
+ npm run build
25
+ npm test
26
+
27
+ update_version 'package.json' $next_version
28
+
29
+ git commit -am "release $next_version"
30
+ git tag $next_version
31
+
32
+ git push --tags
33
+
34
+ npm publish
@@ -1,34 +1,34 @@
1
- require('sqlite3');
2
- const Knex = require('knex');
3
-
4
- const knexSqlite = Knex({
5
- client: 'sqlite',
6
- connection: ':memory:',
7
- });
8
-
9
- const knexMysql = Knex({
10
- client: 'mysql2',
11
- });
12
-
13
- const knexPg = Knex({
14
- client: 'pg',
15
- });
16
-
17
- (async function run() {
18
- await knexSqlite.schema.createTable('test', (t) => {
19
- t.increments('id').primary();
20
- t.string('data');
21
- });
22
-
23
- await knexSqlite('test').insert([{ data: 'foo' }, { data: 'bar' }]);
24
-
25
- console.log('test table data:', await knexSqlite('test'));
26
-
27
- console.log(
28
- knexPg({ f: 'foo', b: 'bar' })
29
- .select('foo.*')
30
- .where('f.name', knexPg.raw('??', ['b.name']))
31
- .whereIn('something', knexPg('bar').select('id'))
32
- .toSQL().sql
33
- );
34
- })();
1
+ require('sqlite3');
2
+ const Knex = require('knex');
3
+
4
+ const knexSqlite = Knex({
5
+ client: 'sqlite',
6
+ connection: ':memory:',
7
+ });
8
+
9
+ const knexMysql = Knex({
10
+ client: 'mysql2',
11
+ });
12
+
13
+ const knexPg = Knex({
14
+ client: 'pg',
15
+ });
16
+
17
+ (async function run() {
18
+ await knexSqlite.schema.createTable('test', (t) => {
19
+ t.increments('id').primary();
20
+ t.string('data');
21
+ });
22
+
23
+ await knexSqlite('test').insert([{ data: 'foo' }, { data: 'bar' }]);
24
+
25
+ console.log('test table data:', await knexSqlite('test'));
26
+
27
+ console.log(
28
+ knexPg({ f: 'foo', b: 'bar' })
29
+ .select('foo.*')
30
+ .where('f.name', knexPg.raw('??', ['b.name']))
31
+ .whereIn('something', knexPg('bar').select('id'))
32
+ .toSQL().sql
33
+ );
34
+ })();