typeorm 0.2.28 → 0.2.29

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 (248) hide show
  1. package/README.md +7 -2
  2. package/browser/connection/ConnectionOptionsReader.js +27 -27
  3. package/browser/connection/ConnectionOptionsReader.js.map +1 -1
  4. package/browser/decorator/entity/ChildEntity.js +1 -1
  5. package/browser/decorator/entity/ChildEntity.js.map +1 -1
  6. package/browser/driver/DriverUtils.js +20 -12
  7. package/browser/driver/DriverUtils.js.map +1 -1
  8. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js +53 -6
  9. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  10. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +53 -6
  11. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
  12. package/browser/driver/cockroachdb/CockroachDriver.js +3 -3
  13. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  14. package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +4 -0
  15. package/browser/driver/cockroachdb/CockroachQueryRunner.js +112 -42
  16. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  17. package/browser/driver/expo/ExpoQueryRunner.js +72 -14
  18. package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
  19. package/browser/driver/mongodb/MongoConnectionOptions.d.ts +4 -0
  20. package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  21. package/browser/driver/mongodb/MongoDriver.d.ts +7 -3
  22. package/browser/driver/mongodb/MongoDriver.js +15 -14
  23. package/browser/driver/mongodb/MongoDriver.js.map +1 -1
  24. package/browser/driver/mongodb/MongoQueryRunner.d.ts +3 -3
  25. package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
  26. package/browser/driver/mysql/MysqlDriver.js +4 -4
  27. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  28. package/browser/driver/mysql/MysqlQueryRunner.d.ts +4 -0
  29. package/browser/driver/mysql/MysqlQueryRunner.js +107 -38
  30. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  31. package/browser/driver/oracle/OracleQueryRunner.js +52 -6
  32. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  33. package/browser/driver/postgres/PostgresDriver.js +7 -7
  34. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  35. package/browser/driver/postgres/PostgresQueryRunner.d.ts +8 -0
  36. package/browser/driver/postgres/PostgresQueryRunner.js +107 -18
  37. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  38. package/browser/driver/react-native/ReactNativeDriver.js +1 -2
  39. package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
  40. package/browser/driver/sap/SapQueryRunner.js +56 -8
  41. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  42. package/browser/driver/sqlite/SqliteQueryRunner.js +4 -0
  43. package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  44. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +55 -7
  45. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  46. package/browser/driver/sqlserver/SqlServerQueryRunner.js +133 -62
  47. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  48. package/browser/entity-manager/MongoEntityManager.js +14 -3
  49. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  50. package/browser/find-options/FindOneOptions.d.ts +4 -0
  51. package/browser/find-options/FindOneOptions.js.map +1 -1
  52. package/browser/find-options/FindOperator.d.ts +20 -1
  53. package/browser/find-options/FindOperator.js +27 -1
  54. package/browser/find-options/FindOperator.js.map +1 -1
  55. package/browser/find-options/FindOperatorType.d.ts +1 -1
  56. package/browser/find-options/FindOperatorType.js.map +1 -1
  57. package/browser/find-options/FindOptionsUtils.js +5 -1
  58. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  59. package/browser/find-options/operator/ILike.d.ts +6 -0
  60. package/browser/find-options/operator/ILike.js +10 -0
  61. package/browser/find-options/operator/ILike.js.map +1 -0
  62. package/browser/find-options/operator/Raw.d.ts +14 -2
  63. package/browser/find-options/operator/Raw.js +5 -6
  64. package/browser/find-options/operator/Raw.js.map +1 -1
  65. package/browser/index.d.ts +2 -0
  66. package/browser/index.js +1 -0
  67. package/browser/index.js.map +1 -1
  68. package/browser/logger/Logger.d.ts +1 -1
  69. package/browser/logger/Logger.js.map +1 -1
  70. package/browser/metadata/ColumnMetadata.js +14 -3
  71. package/browser/metadata/ColumnMetadata.js.map +1 -1
  72. package/browser/metadata/types/EventListenerTypes.d.ts +7 -7
  73. package/browser/metadata/types/EventListenerTypes.js.map +1 -1
  74. package/browser/metadata-builder/EntityMetadataBuilder.js +14 -8
  75. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  76. package/browser/metadata-builder/EntityMetadataValidator.js +8 -5
  77. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  78. package/browser/persistence/EntityPersistExecutor.js +1 -1
  79. package/browser/persistence/EntityPersistExecutor.js.map +1 -1
  80. package/browser/persistence/Subject.js +2 -1
  81. package/browser/persistence/Subject.js.map +1 -1
  82. package/browser/query-builder/DeleteQueryBuilder.js +2 -1
  83. package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
  84. package/browser/query-builder/InsertQueryBuilder.js +31 -8
  85. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  86. package/browser/query-builder/QueryBuilder.d.ts +7 -0
  87. package/browser/query-builder/QueryBuilder.js +125 -32
  88. package/browser/query-builder/QueryBuilder.js.map +1 -1
  89. package/browser/query-builder/QueryExpressionMap.d.ts +4 -0
  90. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  91. package/browser/query-builder/SelectQueryBuilder.d.ts +5 -0
  92. package/browser/query-builder/SelectQueryBuilder.js +73 -40
  93. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  94. package/browser/query-builder/UpdateQueryBuilder.js +2 -1
  95. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  96. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +6 -3
  97. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  98. package/browser/query-runner/QueryRunner.d.ts +1 -1
  99. package/browser/query-runner/QueryRunner.js.map +1 -1
  100. package/browser/repository/TreeRepository.js +2 -2
  101. package/browser/repository/TreeRepository.js.map +1 -1
  102. package/browser/subscriber/Broadcaster.d.ts +24 -0
  103. package/browser/subscriber/Broadcaster.js +120 -0
  104. package/browser/subscriber/Broadcaster.js.map +1 -1
  105. package/browser/subscriber/EntitySubscriberInterface.d.ts +27 -0
  106. package/browser/subscriber/EntitySubscriberInterface.js.map +1 -1
  107. package/browser/subscriber/event/TransactionCommitEvent.d.ts +22 -0
  108. package/browser/subscriber/event/TransactionCommitEvent.js +3 -0
  109. package/browser/subscriber/event/TransactionCommitEvent.js.map +1 -0
  110. package/browser/subscriber/event/TransactionRollbackEvent.d.ts +22 -0
  111. package/browser/subscriber/event/TransactionRollbackEvent.js +3 -0
  112. package/browser/subscriber/event/TransactionRollbackEvent.js.map +1 -0
  113. package/browser/subscriber/event/TransactionStartEvent.d.ts +22 -0
  114. package/browser/subscriber/event/TransactionStartEvent.js +3 -0
  115. package/browser/subscriber/event/TransactionStartEvent.js.map +1 -0
  116. package/browser/util/DateUtils.js +1 -7
  117. package/browser/util/DateUtils.js.map +1 -1
  118. package/commands/EntityCreateCommand.js +5 -2
  119. package/commands/EntityCreateCommand.js.map +1 -1
  120. package/commands/InitCommand.js +1 -1
  121. package/commands/InitCommand.js.map +1 -1
  122. package/commands/MigrationCreateCommand.js +4 -1
  123. package/commands/MigrationCreateCommand.js.map +1 -1
  124. package/commands/MigrationGenerateCommand.js +26 -28
  125. package/commands/MigrationGenerateCommand.js.map +1 -1
  126. package/commands/QueryCommand.d.ts +2 -0
  127. package/commands/QueryCommand.js +12 -3
  128. package/commands/QueryCommand.js.map +1 -1
  129. package/commands/SubscriberCreateCommand.js +5 -2
  130. package/commands/SubscriberCreateCommand.js.map +1 -1
  131. package/connection/ConnectionOptionsReader.js +27 -27
  132. package/connection/ConnectionOptionsReader.js.map +1 -1
  133. package/decorator/entity/ChildEntity.js +1 -1
  134. package/decorator/entity/ChildEntity.js.map +1 -1
  135. package/driver/DriverUtils.js +19 -11
  136. package/driver/DriverUtils.js.map +1 -1
  137. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +53 -6
  138. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  139. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +53 -6
  140. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
  141. package/driver/cockroachdb/CockroachDriver.js +3 -3
  142. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  143. package/driver/cockroachdb/CockroachQueryRunner.d.ts +4 -0
  144. package/driver/cockroachdb/CockroachQueryRunner.js +112 -42
  145. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  146. package/driver/expo/ExpoQueryRunner.js +72 -14
  147. package/driver/expo/ExpoQueryRunner.js.map +1 -1
  148. package/driver/mongodb/MongoConnectionOptions.d.ts +4 -0
  149. package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  150. package/driver/mongodb/MongoDriver.d.ts +7 -3
  151. package/driver/mongodb/MongoDriver.js +15 -14
  152. package/driver/mongodb/MongoDriver.js.map +1 -1
  153. package/driver/mongodb/MongoQueryRunner.d.ts +3 -3
  154. package/driver/mongodb/MongoQueryRunner.js.map +1 -1
  155. package/driver/mysql/MysqlDriver.js +4 -4
  156. package/driver/mysql/MysqlDriver.js.map +1 -1
  157. package/driver/mysql/MysqlQueryRunner.d.ts +4 -0
  158. package/driver/mysql/MysqlQueryRunner.js +107 -38
  159. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  160. package/driver/oracle/OracleQueryRunner.js +52 -6
  161. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  162. package/driver/postgres/PostgresDriver.js +7 -7
  163. package/driver/postgres/PostgresDriver.js.map +1 -1
  164. package/driver/postgres/PostgresQueryRunner.d.ts +8 -0
  165. package/driver/postgres/PostgresQueryRunner.js +107 -18
  166. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  167. package/driver/react-native/ReactNativeDriver.js +1 -2
  168. package/driver/react-native/ReactNativeDriver.js.map +1 -1
  169. package/driver/sap/SapQueryRunner.js +56 -8
  170. package/driver/sap/SapQueryRunner.js.map +1 -1
  171. package/driver/sqlite/SqliteQueryRunner.js +4 -0
  172. package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  173. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +55 -7
  174. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  175. package/driver/sqlserver/SqlServerQueryRunner.js +133 -62
  176. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  177. package/entity-manager/MongoEntityManager.js +14 -3
  178. package/entity-manager/MongoEntityManager.js.map +1 -1
  179. package/find-options/FindOneOptions.d.ts +4 -0
  180. package/find-options/FindOneOptions.js.map +1 -1
  181. package/find-options/FindOperator.d.ts +20 -1
  182. package/find-options/FindOperator.js +27 -1
  183. package/find-options/FindOperator.js.map +1 -1
  184. package/find-options/FindOperatorType.d.ts +1 -1
  185. package/find-options/FindOperatorType.js.map +1 -1
  186. package/find-options/FindOptionsUtils.js +5 -1
  187. package/find-options/FindOptionsUtils.js.map +1 -1
  188. package/find-options/operator/ILike.d.ts +6 -0
  189. package/find-options/operator/ILike.js +13 -0
  190. package/find-options/operator/ILike.js.map +1 -0
  191. package/find-options/operator/Raw.d.ts +14 -2
  192. package/find-options/operator/Raw.js +5 -6
  193. package/find-options/operator/Raw.js.map +1 -1
  194. package/index.d.ts +2 -0
  195. package/index.js +1 -0
  196. package/index.js.map +1 -1
  197. package/logger/Logger.d.ts +1 -1
  198. package/logger/Logger.js.map +1 -1
  199. package/metadata/ColumnMetadata.js +14 -3
  200. package/metadata/ColumnMetadata.js.map +1 -1
  201. package/metadata/types/EventListenerTypes.d.ts +7 -7
  202. package/metadata/types/EventListenerTypes.js.map +1 -1
  203. package/metadata-builder/EntityMetadataBuilder.js +14 -8
  204. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  205. package/metadata-builder/EntityMetadataValidator.js +8 -5
  206. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  207. package/package.json +3 -2
  208. package/persistence/EntityPersistExecutor.js +1 -1
  209. package/persistence/EntityPersistExecutor.js.map +1 -1
  210. package/persistence/Subject.js +2 -1
  211. package/persistence/Subject.js.map +1 -1
  212. package/query-builder/DeleteQueryBuilder.js +2 -1
  213. package/query-builder/DeleteQueryBuilder.js.map +1 -1
  214. package/query-builder/InsertQueryBuilder.js +31 -8
  215. package/query-builder/InsertQueryBuilder.js.map +1 -1
  216. package/query-builder/QueryBuilder.d.ts +7 -0
  217. package/query-builder/QueryBuilder.js +124 -31
  218. package/query-builder/QueryBuilder.js.map +1 -1
  219. package/query-builder/QueryExpressionMap.d.ts +4 -0
  220. package/query-builder/QueryExpressionMap.js.map +1 -1
  221. package/query-builder/SelectQueryBuilder.d.ts +5 -0
  222. package/query-builder/SelectQueryBuilder.js +73 -40
  223. package/query-builder/SelectQueryBuilder.js.map +1 -1
  224. package/query-builder/UpdateQueryBuilder.js +2 -1
  225. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  226. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +6 -3
  227. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  228. package/query-runner/QueryRunner.d.ts +1 -1
  229. package/query-runner/QueryRunner.js.map +1 -1
  230. package/repository/TreeRepository.js +2 -2
  231. package/repository/TreeRepository.js.map +1 -1
  232. package/subscriber/Broadcaster.d.ts +24 -0
  233. package/subscriber/Broadcaster.js +120 -0
  234. package/subscriber/Broadcaster.js.map +1 -1
  235. package/subscriber/EntitySubscriberInterface.d.ts +27 -0
  236. package/subscriber/EntitySubscriberInterface.js.map +1 -1
  237. package/subscriber/event/TransactionCommitEvent.d.ts +22 -0
  238. package/subscriber/event/TransactionCommitEvent.js +4 -0
  239. package/subscriber/event/TransactionCommitEvent.js.map +1 -0
  240. package/subscriber/event/TransactionRollbackEvent.d.ts +22 -0
  241. package/subscriber/event/TransactionRollbackEvent.js +4 -0
  242. package/subscriber/event/TransactionRollbackEvent.js.map +1 -0
  243. package/subscriber/event/TransactionStartEvent.d.ts +22 -0
  244. package/subscriber/event/TransactionStartEvent.js +4 -0
  245. package/subscriber/event/TransactionStartEvent.js.map +1 -0
  246. package/typeorm-model-shim.js +145 -128
  247. package/util/DateUtils.js +1 -7
  248. package/util/DateUtils.js.map +1 -1
@@ -16,6 +16,7 @@ var TableUnique_1 = require("../../schema-builder/table/TableUnique");
16
16
  var BaseQueryRunner_1 = require("../../query-runner/BaseQueryRunner");
17
17
  var Broadcaster_1 = require("../../subscriber/Broadcaster");
18
18
  var VersionUtils_1 = require("../../util/VersionUtils");
19
+ var BroadcasterResult_1 = require("../../subscriber/BroadcasterResult");
19
20
  /**
20
21
  * Runs queries on a single mysql database connection.
21
22
  */
@@ -74,25 +75,42 @@ var MysqlQueryRunner = /** @class */ (function (_super) {
74
75
  */
75
76
  MysqlQueryRunner.prototype.startTransaction = function (isolationLevel) {
76
77
  return tslib_1.__awaiter(this, void 0, void 0, function () {
78
+ var beforeBroadcastResult, afterBroadcastResult;
77
79
  return tslib_1.__generator(this, function (_a) {
78
80
  switch (_a.label) {
79
81
  case 0:
80
82
  if (this.isTransactionActive)
81
83
  throw new TransactionAlreadyStartedError_1.TransactionAlreadyStartedError();
82
- this.isTransactionActive = true;
83
- if (!isolationLevel) return [3 /*break*/, 3];
84
- return [4 /*yield*/, this.query("SET TRANSACTION ISOLATION LEVEL " + isolationLevel)];
84
+ beforeBroadcastResult = new BroadcasterResult_1.BroadcasterResult();
85
+ this.broadcaster.broadcastBeforeTransactionStartEvent(beforeBroadcastResult);
86
+ if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];
87
+ return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];
85
88
  case 1:
86
89
  _a.sent();
87
- return [4 /*yield*/, this.query("START TRANSACTION")];
90
+ _a.label = 2;
88
91
  case 2:
92
+ this.isTransactionActive = true;
93
+ if (!isolationLevel) return [3 /*break*/, 5];
94
+ return [4 /*yield*/, this.query("SET TRANSACTION ISOLATION LEVEL " + isolationLevel)];
95
+ case 3:
89
96
  _a.sent();
90
- return [3 /*break*/, 5];
91
- case 3: return [4 /*yield*/, this.query("START TRANSACTION")];
97
+ return [4 /*yield*/, this.query("START TRANSACTION")];
92
98
  case 4:
93
99
  _a.sent();
94
- _a.label = 5;
95
- case 5: return [2 /*return*/];
100
+ return [3 /*break*/, 7];
101
+ case 5: return [4 /*yield*/, this.query("START TRANSACTION")];
102
+ case 6:
103
+ _a.sent();
104
+ _a.label = 7;
105
+ case 7:
106
+ afterBroadcastResult = new BroadcasterResult_1.BroadcasterResult();
107
+ this.broadcaster.broadcastAfterTransactionStartEvent(afterBroadcastResult);
108
+ if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 9];
109
+ return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];
110
+ case 8:
111
+ _a.sent();
112
+ _a.label = 9;
113
+ case 9: return [2 /*return*/];
96
114
  }
97
115
  });
98
116
  });
@@ -103,16 +121,31 @@ var MysqlQueryRunner = /** @class */ (function (_super) {
103
121
  */
104
122
  MysqlQueryRunner.prototype.commitTransaction = function () {
105
123
  return tslib_1.__awaiter(this, void 0, void 0, function () {
124
+ var beforeBroadcastResult, afterBroadcastResult;
106
125
  return tslib_1.__generator(this, function (_a) {
107
126
  switch (_a.label) {
108
127
  case 0:
109
128
  if (!this.isTransactionActive)
110
129
  throw new TransactionNotStartedError_1.TransactionNotStartedError();
111
- return [4 /*yield*/, this.query("COMMIT")];
130
+ beforeBroadcastResult = new BroadcasterResult_1.BroadcasterResult();
131
+ this.broadcaster.broadcastBeforeTransactionCommitEvent(beforeBroadcastResult);
132
+ if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];
133
+ return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];
112
134
  case 1:
135
+ _a.sent();
136
+ _a.label = 2;
137
+ case 2: return [4 /*yield*/, this.query("COMMIT")];
138
+ case 3:
113
139
  _a.sent();
114
140
  this.isTransactionActive = false;
115
- return [2 /*return*/];
141
+ afterBroadcastResult = new BroadcasterResult_1.BroadcasterResult();
142
+ this.broadcaster.broadcastAfterTransactionCommitEvent(afterBroadcastResult);
143
+ if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5];
144
+ return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];
145
+ case 4:
146
+ _a.sent();
147
+ _a.label = 5;
148
+ case 5: return [2 /*return*/];
116
149
  }
117
150
  });
118
151
  });
@@ -123,16 +156,31 @@ var MysqlQueryRunner = /** @class */ (function (_super) {
123
156
  */
124
157
  MysqlQueryRunner.prototype.rollbackTransaction = function () {
125
158
  return tslib_1.__awaiter(this, void 0, void 0, function () {
159
+ var beforeBroadcastResult, afterBroadcastResult;
126
160
  return tslib_1.__generator(this, function (_a) {
127
161
  switch (_a.label) {
128
162
  case 0:
129
163
  if (!this.isTransactionActive)
130
164
  throw new TransactionNotStartedError_1.TransactionNotStartedError();
131
- return [4 /*yield*/, this.query("ROLLBACK")];
165
+ beforeBroadcastResult = new BroadcasterResult_1.BroadcasterResult();
166
+ this.broadcaster.broadcastBeforeTransactionRollbackEvent(beforeBroadcastResult);
167
+ if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];
168
+ return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];
132
169
  case 1:
170
+ _a.sent();
171
+ _a.label = 2;
172
+ case 2: return [4 /*yield*/, this.query("ROLLBACK")];
173
+ case 3:
133
174
  _a.sent();
134
175
  this.isTransactionActive = false;
135
- return [2 /*return*/];
176
+ afterBroadcastResult = new BroadcasterResult_1.BroadcasterResult();
177
+ this.broadcaster.broadcastAfterTransactionRollbackEvent(afterBroadcastResult);
178
+ if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5];
179
+ return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];
180
+ case 4:
181
+ _a.sent();
182
+ _a.label = 5;
183
+ case 5: return [2 /*return*/];
136
184
  }
137
185
  });
138
186
  });
@@ -828,7 +876,7 @@ var MysqlQueryRunner = /** @class */ (function (_super) {
828
876
  clonedTable.columns[clonedTable.columns.indexOf(oldTableColumn)].name = newColumn.name;
829
877
  oldColumn.name = newColumn.name;
830
878
  }
831
- if (this.isColumnChanged(oldColumn, newColumn, true)) {
879
+ if (this.isColumnChanged(oldColumn, newColumn, true, true)) {
832
880
  upQueries.push(new Query_1.Query("ALTER TABLE " + this.escapePath(table) + " CHANGE `" + oldColumn.name + "` " + this.buildCreateColumnSql(newColumn, true)));
833
881
  downQueries.push(new Query_1.Query("ALTER TABLE " + this.escapePath(table) + " CHANGE `" + newColumn.name + "` " + this.buildCreateColumnSql(oldColumn, true)));
834
882
  }
@@ -1676,7 +1724,7 @@ var MysqlQueryRunner = /** @class */ (function (_super) {
1676
1724
  */
1677
1725
  MysqlQueryRunner.prototype.loadTables = function (tableNames) {
1678
1726
  return tslib_1.__awaiter(this, void 0, void 0, function () {
1679
- var currentDatabase, tablesCondition, tablesSql, columnsSql, primaryKeySql, collationsSql, indicesCondition, indicesSql, foreignKeysCondition, foreignKeysSql, _a, dbTables, dbColumns, dbPrimaryKeys, dbCollations, dbIndices, dbForeignKeys, isMariaDb, dbVersion;
1727
+ var currentDatabase, statsSubquerySql, kcuSubquerySql, rcSubquerySql, tablesSql, columnsSql, collationsSql, primaryKeySql, indicesSql, foreignKeysSql, _a, dbTables, dbColumns, dbPrimaryKeys, dbCollations, dbIndices, dbForeignKeys, isMariaDb, dbVersion;
1680
1728
  var _this = this;
1681
1729
  return tslib_1.__generator(this, function (_b) {
1682
1730
  switch (_b.label) {
@@ -1687,42 +1735,50 @@ var MysqlQueryRunner = /** @class */ (function (_super) {
1687
1735
  return [4 /*yield*/, this.getCurrentDatabase()];
1688
1736
  case 1:
1689
1737
  currentDatabase = _b.sent();
1690
- tablesCondition = tableNames.map(function (tableName) {
1738
+ statsSubquerySql = tableNames.map(function (tableName) {
1691
1739
  var _a = tslib_1.__read(tableName.split("."), 2), database = _a[0], name = _a[1];
1692
1740
  if (!name) {
1693
1741
  name = database;
1694
1742
  database = _this.driver.database || currentDatabase;
1695
1743
  }
1696
- return "(`TABLE_SCHEMA` = '" + database + "' AND `TABLE_NAME` = '" + name + "')";
1697
- }).join(" OR ");
1698
- tablesSql = "SELECT * FROM `INFORMATION_SCHEMA`.`TABLES` WHERE " + tablesCondition;
1699
- columnsSql = "SELECT * FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE " + tablesCondition;
1700
- primaryKeySql = "SELECT * FROM `INFORMATION_SCHEMA`.`KEY_COLUMN_USAGE` WHERE `CONSTRAINT_NAME` = 'PRIMARY' AND (" + tablesCondition + ")";
1701
- collationsSql = "SELECT `SCHEMA_NAME`, `DEFAULT_CHARACTER_SET_NAME` as `CHARSET`, `DEFAULT_COLLATION_NAME` AS `COLLATION` FROM `INFORMATION_SCHEMA`.`SCHEMATA`";
1702
- indicesCondition = tableNames.map(function (tableName) {
1744
+ return "\n SELECT\n *\n FROM `INFORMATION_SCHEMA`.`STATISTICS`\n WHERE\n `TABLE_SCHEMA` = '" + database + "'\n AND\n `TABLE_NAME` = '" + name + "'\n ";
1745
+ }).join(" UNION ");
1746
+ kcuSubquerySql = tableNames.map(function (tableName) {
1703
1747
  var _a = tslib_1.__read(tableName.split("."), 2), database = _a[0], name = _a[1];
1704
1748
  if (!name) {
1705
1749
  name = database;
1706
1750
  database = _this.driver.database || currentDatabase;
1707
1751
  }
1708
- return "(`s`.`TABLE_SCHEMA` = '" + database + "' AND `s`.`TABLE_NAME` = '" + name + "')";
1709
- }).join(" OR ");
1710
- indicesSql = "SELECT `s`.* FROM `INFORMATION_SCHEMA`.`STATISTICS` `s` " +
1711
- "LEFT JOIN `INFORMATION_SCHEMA`.`REFERENTIAL_CONSTRAINTS` `rc` ON `s`.`INDEX_NAME` = `rc`.`CONSTRAINT_NAME` AND `s`.`TABLE_SCHEMA` = `rc`.`CONSTRAINT_SCHEMA`" +
1712
- ("WHERE (" + indicesCondition + ") AND `s`.`INDEX_NAME` != 'PRIMARY' AND `rc`.`CONSTRAINT_NAME` IS NULL");
1713
- foreignKeysCondition = tableNames.map(function (tableName) {
1752
+ return "\n SELECT\n *\n FROM `INFORMATION_SCHEMA`.`KEY_COLUMN_USAGE` `kcu`\n WHERE\n `kcu`.`TABLE_SCHEMA` = '" + database + "'\n AND\n `kcu`.`TABLE_NAME` = '" + name + "'\n ";
1753
+ }).join(" UNION ");
1754
+ rcSubquerySql = tableNames.map(function (tableName) {
1714
1755
  var _a = tslib_1.__read(tableName.split("."), 2), database = _a[0], name = _a[1];
1715
1756
  if (!name) {
1716
1757
  name = database;
1717
1758
  database = _this.driver.database || currentDatabase;
1718
1759
  }
1719
- return "(`kcu`.`TABLE_SCHEMA` = '" + database + "' AND `kcu`.`TABLE_NAME` = '" + name + "')";
1720
- }).join(" OR ");
1721
- foreignKeysSql = "SELECT `kcu`.`TABLE_SCHEMA`, `kcu`.`TABLE_NAME`, `kcu`.`CONSTRAINT_NAME`, `kcu`.`COLUMN_NAME`, `kcu`.`REFERENCED_TABLE_SCHEMA`, " +
1722
- "`kcu`.`REFERENCED_TABLE_NAME`, `kcu`.`REFERENCED_COLUMN_NAME`, `rc`.`DELETE_RULE` `ON_DELETE`, `rc`.`UPDATE_RULE` `ON_UPDATE` " +
1723
- "FROM `INFORMATION_SCHEMA`.`KEY_COLUMN_USAGE` `kcu` " +
1724
- "INNER JOIN `INFORMATION_SCHEMA`.`REFERENTIAL_CONSTRAINTS` `rc` ON `rc`.`constraint_name` = `kcu`.`constraint_name` " +
1725
- "WHERE " + foreignKeysCondition;
1760
+ return "\n SELECT\n *\n FROM `INFORMATION_SCHEMA`.`REFERENTIAL_CONSTRAINTS`\n WHERE\n `CONSTRAINT_SCHEMA` = '" + database + "'\n AND\n `TABLE_NAME` = '" + name + "'\n ";
1761
+ }).join(" UNION ");
1762
+ tablesSql = tableNames.map(function (tableName) {
1763
+ var _a = tslib_1.__read(tableName.split("."), 2), database = _a[0], name = _a[1];
1764
+ if (!name) {
1765
+ name = database;
1766
+ database = _this.driver.database || currentDatabase;
1767
+ }
1768
+ return "\n SELECT\n `TABLE_SCHEMA`,\n `TABLE_NAME`\n FROM\n `INFORMATION_SCHEMA`.`TABLES`\n WHERE\n `TABLE_SCHEMA` = '" + database + "'\n AND\n `TABLE_NAME` = '" + name + "'\n ";
1769
+ }).join(" UNION ");
1770
+ columnsSql = tableNames.map(function (tableName) {
1771
+ var _a = tslib_1.__read(tableName.split("."), 2), database = _a[0], name = _a[1];
1772
+ if (!name) {
1773
+ name = database;
1774
+ database = _this.driver.database || currentDatabase;
1775
+ }
1776
+ return "\n SELECT\n *\n FROM\n `INFORMATION_SCHEMA`.`COLUMNS`\n WHERE\n `TABLE_SCHEMA` = '" + database + "'\n AND\n `TABLE_NAME` = '" + name + "'\n ";
1777
+ }).join(" UNION ");
1778
+ collationsSql = "\n SELECT\n `SCHEMA_NAME`,\n `DEFAULT_CHARACTER_SET_NAME` as `CHARSET`,\n `DEFAULT_COLLATION_NAME` AS `COLLATION`\n FROM `INFORMATION_SCHEMA`.`SCHEMATA`\n ";
1779
+ primaryKeySql = "SELECT * FROM (" + kcuSubquerySql + ") `kcu` WHERE `CONSTRAINT_NAME` = 'PRIMARY'";
1780
+ indicesSql = "\n SELECT\n `s`.*\n FROM (" + statsSubquerySql + ") `s`\n LEFT JOIN (" + rcSubquerySql + ") `rc`\n ON\n `s`.`INDEX_NAME` = `rc`.`CONSTRAINT_NAME`\n AND\n `s`.`TABLE_SCHEMA` = `rc`.`CONSTRAINT_SCHEMA`\n WHERE\n `s`.`INDEX_NAME` != 'PRIMARY'\n AND\n `rc`.`CONSTRAINT_NAME` IS NULL\n ";
1781
+ foreignKeysSql = "\n SELECT\n `kcu`.`TABLE_SCHEMA`,\n `kcu`.`TABLE_NAME`,\n `kcu`.`CONSTRAINT_NAME`,\n `kcu`.`COLUMN_NAME`,\n `kcu`.`REFERENCED_TABLE_SCHEMA`,\n `kcu`.`REFERENCED_TABLE_NAME`,\n `kcu`.`REFERENCED_COLUMN_NAME`,\n `rc`.`DELETE_RULE` `ON_DELETE`,\n `rc`.`UPDATE_RULE` `ON_UPDATE`\n FROM (" + kcuSubquerySql + ") `kcu`\n INNER JOIN (" + rcSubquerySql + ") `rc`\n ON\n `rc`.`CONSTRAINT_SCHEMA` = `kcu`.`CONSTRAINT_SCHEMA`\n AND\n `rc`.`TABLE_NAME` = `kcu`.`TABLE_NAME`\n AND\n `rc`.`CONSTRAINT_NAME` = `kcu`.`CONSTRAINT_NAME`\n ";
1726
1782
  return [4 /*yield*/, Promise.all([
1727
1783
  this.query(tablesSql),
1728
1784
  this.query(columnsSql),
@@ -1818,7 +1874,7 @@ var MysqlQueryRunner = /** @class */ (function (_super) {
1818
1874
  tableColumn.isGenerated = dbColumn["EXTRA"].indexOf("auto_increment") !== -1;
1819
1875
  if (tableColumn.isGenerated)
1820
1876
  tableColumn.generationStrategy = "increment";
1821
- tableColumn.comment = dbColumn["COLUMN_COMMENT"];
1877
+ tableColumn.comment = (typeof dbColumn["COLUMN_COMMENT"] === "string" && dbColumn["COLUMN_COMMENT"].length === 0) ? undefined : dbColumn["COLUMN_COMMENT"];
1822
1878
  if (dbColumn["CHARACTER_SET_NAME"])
1823
1879
  tableColumn.charset = dbColumn["CHARACTER_SET_NAME"] === defaultCharset ? undefined : dbColumn["CHARACTER_SET_NAME"];
1824
1880
  if (dbColumn["COLLATION_NAME"])
@@ -2095,6 +2151,19 @@ var MysqlQueryRunner = /** @class */ (function (_super) {
2095
2151
  tableName: tableName.indexOf(".") !== -1 ? tableName.split(".")[1] : tableName
2096
2152
  };
2097
2153
  };
2154
+ /**
2155
+ * Escapes a given comment so it's safe to include in a query.
2156
+ */
2157
+ MysqlQueryRunner.prototype.escapeComment = function (comment) {
2158
+ if (comment === undefined || comment.length === 0) {
2159
+ return "''";
2160
+ }
2161
+ comment = comment
2162
+ .replace("\\", "\\\\") // MySQL allows escaping characters via backslashes
2163
+ .replace("'", "''")
2164
+ .replace("\0", ""); // Null bytes aren't allowed in comments
2165
+ return "'" + comment + "'";
2166
+ };
2098
2167
  /**
2099
2168
  * Escapes given table or view path.
2100
2169
  */
@@ -2137,8 +2206,8 @@ var MysqlQueryRunner = /** @class */ (function (_super) {
2137
2206
  c += " PRIMARY KEY";
2138
2207
  if (column.isGenerated && column.generationStrategy === "increment") // don't use skipPrimary here since updates can update already exist primary without auto inc.
2139
2208
  c += " AUTO_INCREMENT";
2140
- if (column.comment)
2141
- c += " COMMENT '" + column.comment.replace("'", "''") + "'";
2209
+ if (column.comment !== undefined && column.comment.length > 0)
2210
+ c += " COMMENT " + this.escapeComment(column.comment);
2142
2211
  if (column.default !== undefined && column.default !== null)
2143
2212
  c += " DEFAULT " + column.default;
2144
2213
  if (column.onUpdate)