typeorm 0.3.6-dev.9d331b1 → 0.3.6-dev.bbdc20f

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 (370) hide show
  1. package/README.md +34 -14
  2. package/browser/cache/DbQueryResultCache.js +9 -1
  3. package/browser/cache/DbQueryResultCache.js.map +1 -1
  4. package/browser/cache/RedisQueryResultCache.js +3 -0
  5. package/browser/cache/RedisQueryResultCache.js.map +1 -1
  6. package/browser/data-source/DataSourceOptions.d.ts +2 -1
  7. package/browser/data-source/DataSourceOptions.js.map +1 -1
  8. package/browser/decorator/Index.js +1 -0
  9. package/browser/decorator/Index.js.map +1 -1
  10. package/browser/decorator/columns/PrimaryColumn.js +4 -1
  11. package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
  12. package/browser/decorator/options/ColumnOptions.d.ts +10 -2
  13. package/browser/decorator/options/ColumnOptions.js.map +1 -1
  14. package/browser/decorator/options/IndexOptions.d.ts +8 -0
  15. package/browser/decorator/options/IndexOptions.js.map +1 -1
  16. package/browser/decorator/options/JoinColumnOptions.d.ts +4 -0
  17. package/browser/decorator/options/JoinColumnOptions.js.map +1 -1
  18. package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +4 -0
  19. package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
  20. package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts +4 -0
  21. package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
  22. package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.d.ts +4 -0
  23. package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
  24. package/browser/decorator/relations/JoinColumn.js +1 -0
  25. package/browser/decorator/relations/JoinColumn.js.map +1 -1
  26. package/browser/driver/DriverFactory.js +4 -0
  27. package/browser/driver/DriverFactory.js.map +1 -1
  28. package/browser/driver/aurora-mysql/AuroraMysqlDriver.d.ts +1 -1
  29. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  30. package/browser/driver/cockroachdb/CockroachDriver.js +4 -1
  31. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  32. package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +3 -3
  33. package/browser/driver/cockroachdb/CockroachQueryRunner.js +233 -33
  34. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  35. package/browser/driver/mongodb/typings.d.ts +5 -5
  36. package/browser/driver/mongodb/typings.js.map +1 -1
  37. package/browser/driver/mysql/MysqlDriver.d.ts +1 -0
  38. package/browser/driver/mysql/MysqlDriver.js +94 -23
  39. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  40. package/browser/driver/mysql/MysqlQueryRunner.js +219 -24
  41. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  42. package/browser/driver/oracle/OracleDriver.js +79 -15
  43. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  44. package/browser/driver/oracle/OracleQueryRunner.d.ts +3 -3
  45. package/browser/driver/oracle/OracleQueryRunner.js +216 -42
  46. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  47. package/browser/driver/postgres/PostgresDriver.js +95 -18
  48. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  49. package/browser/driver/postgres/PostgresQueryRunner.d.ts +3 -3
  50. package/browser/driver/postgres/PostgresQueryRunner.js +159 -59
  51. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  52. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +17 -0
  53. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js +3 -0
  54. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -0
  55. package/browser/driver/spanner/SpannerConnectionOptions.d.ts +120 -0
  56. package/browser/driver/spanner/SpannerConnectionOptions.js +3 -0
  57. package/browser/driver/spanner/SpannerConnectionOptions.js.map +1 -0
  58. package/browser/driver/spanner/SpannerDriver.d.ts +241 -0
  59. package/browser/driver/spanner/SpannerDriver.js +604 -0
  60. package/browser/driver/spanner/SpannerDriver.js.map +1 -0
  61. package/browser/driver/spanner/SpannerQueryRunner.d.ts +350 -0
  62. package/browser/driver/spanner/SpannerQueryRunner.js +1445 -0
  63. package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -0
  64. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +65 -16
  65. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  66. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +218 -32
  67. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  68. package/browser/driver/sqlserver/SqlServerDriver.d.ts +3 -1
  69. package/browser/driver/sqlserver/SqlServerDriver.js +99 -26
  70. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  71. package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +3 -3
  72. package/browser/driver/sqlserver/SqlServerQueryRunner.js +251 -37
  73. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  74. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.d.ts +1 -1
  75. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
  76. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.d.ts +2 -2
  77. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
  78. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.d.ts +2 -2
  79. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
  80. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.d.ts +2 -2
  81. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -1
  82. package/browser/driver/types/ColumnTypes.d.ts +1 -1
  83. package/browser/driver/types/ColumnTypes.js.map +1 -1
  84. package/browser/driver/types/DatabaseType.d.ts +1 -1
  85. package/browser/driver/types/DatabaseType.js.map +1 -1
  86. package/browser/entity-manager/EntityManager.js +1 -1
  87. package/browser/entity-manager/EntityManager.js.map +1 -1
  88. package/browser/entity-schema/EntitySchemaColumnOptions.d.ts +6 -2
  89. package/browser/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  90. package/browser/entity-schema/EntitySchemaIndexOptions.d.ts +8 -0
  91. package/browser/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
  92. package/browser/entity-schema/EntitySchemaTransformer.js +3 -0
  93. package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
  94. package/browser/find-options/FindOneOptions.d.ts +1 -1
  95. package/browser/find-options/FindOneOptions.js.map +1 -1
  96. package/browser/find-options/FindOptionsUtils.d.ts +2 -1
  97. package/browser/find-options/FindOptionsUtils.js +2 -1
  98. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  99. package/browser/logger/AdvancedConsoleLogger.d.ts +1 -1
  100. package/browser/logger/AdvancedConsoleLogger.js +1 -1
  101. package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
  102. package/browser/metadata/ColumnMetadata.d.ts +10 -2
  103. package/browser/metadata/ColumnMetadata.js +8 -0
  104. package/browser/metadata/ColumnMetadata.js.map +1 -1
  105. package/browser/metadata/EntityMetadata.js +1 -1
  106. package/browser/metadata/EntityMetadata.js.map +1 -1
  107. package/browser/metadata/ForeignKeyMetadata.d.ts +7 -0
  108. package/browser/metadata/ForeignKeyMetadata.js +4 -1
  109. package/browser/metadata/ForeignKeyMetadata.js.map +1 -1
  110. package/browser/metadata/IndexMetadata.d.ts +8 -0
  111. package/browser/metadata/IndexMetadata.js +9 -0
  112. package/browser/metadata/IndexMetadata.js.map +1 -1
  113. package/browser/metadata-args/IndexMetadataArgs.d.ts +8 -0
  114. package/browser/metadata-args/IndexMetadataArgs.js.map +1 -1
  115. package/browser/metadata-args/JoinColumnMetadataArgs.d.ts +4 -0
  116. package/browser/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
  117. package/browser/metadata-builder/EntityMetadataBuilder.js +13 -6
  118. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  119. package/browser/metadata-builder/EntityMetadataValidator.js +17 -0
  120. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  121. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +18 -6
  122. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  123. package/browser/metadata-builder/RelationJoinColumnBuilder.js +2 -0
  124. package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  125. package/browser/migration/MigrationExecutor.js +1 -1
  126. package/browser/migration/MigrationExecutor.js.map +1 -1
  127. package/browser/persistence/SubjectDatabaseEntityLoader.d.ts +1 -1
  128. package/browser/persistence/SubjectDatabaseEntityLoader.js +1 -1
  129. package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  130. package/browser/persistence/SubjectExecutor.js +1 -1
  131. package/browser/persistence/SubjectExecutor.js.map +1 -1
  132. package/browser/persistence/subject-builder/CascadesSubjectBuilder.d.ts +1 -1
  133. package/browser/persistence/subject-builder/CascadesSubjectBuilder.js +1 -1
  134. package/browser/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  135. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js +1 -1
  136. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  137. package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +1 -1
  138. package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  139. package/browser/platform/PlatformTools.js +5 -0
  140. package/browser/platform/PlatformTools.js.map +1 -1
  141. package/browser/query-builder/InsertQueryBuilder.js +15 -3
  142. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  143. package/browser/query-builder/QueryBuilder.d.ts +1 -1
  144. package/browser/query-builder/QueryBuilder.js +15 -15
  145. package/browser/query-builder/QueryBuilder.js.map +1 -1
  146. package/browser/query-builder/QueryExpressionMap.d.ts +2 -2
  147. package/browser/query-builder/QueryExpressionMap.js +1 -1
  148. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  149. package/browser/query-builder/ReturningResultsEntityUpdator.js +2 -2
  150. package/browser/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  151. package/browser/query-builder/SelectQueryBuilder.d.ts +1 -1
  152. package/browser/query-builder/SelectQueryBuilder.js +25 -4
  153. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  154. package/browser/query-builder/UpdateQueryBuilder.js +18 -7
  155. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  156. package/browser/query-runner/BaseQueryRunner.d.ts +10 -0
  157. package/browser/query-runner/BaseQueryRunner.js +25 -1
  158. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  159. package/browser/query-runner/QueryRunner.d.ts +2 -2
  160. package/browser/query-runner/QueryRunner.js.map +1 -1
  161. package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +6 -2
  162. package/browser/schema-builder/RdbmsSchemaBuilder.js +26 -6
  163. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  164. package/browser/schema-builder/options/TableColumnOptions.d.ts +10 -2
  165. package/browser/schema-builder/options/TableColumnOptions.js.map +1 -1
  166. package/browser/schema-builder/options/TableForeignKeyOptions.d.ts +1 -1
  167. package/browser/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
  168. package/browser/schema-builder/options/TableIndexOptions.d.ts +8 -0
  169. package/browser/schema-builder/options/TableIndexOptions.js.map +1 -1
  170. package/browser/schema-builder/table/TableColumn.d.ts +6 -2
  171. package/browser/schema-builder/table/TableColumn.js +2 -0
  172. package/browser/schema-builder/table/TableColumn.js.map +1 -1
  173. package/browser/schema-builder/table/TableIndex.d.ts +8 -0
  174. package/browser/schema-builder/table/TableIndex.js +3 -0
  175. package/browser/schema-builder/table/TableIndex.js.map +1 -1
  176. package/browser/schema-builder/util/TableUtils.js +1 -0
  177. package/browser/schema-builder/util/TableUtils.js.map +1 -1
  178. package/browser/util/OrmUtils.d.ts +1 -1
  179. package/browser/util/OrmUtils.js +4 -4
  180. package/browser/util/OrmUtils.js.map +1 -1
  181. package/browser/util/escapeRegExp.d.ts +1 -0
  182. package/browser/util/escapeRegExp.js +6 -0
  183. package/browser/util/escapeRegExp.js.map +1 -0
  184. package/cache/DbQueryResultCache.js +9 -1
  185. package/cache/DbQueryResultCache.js.map +1 -1
  186. package/cache/RedisQueryResultCache.js +3 -0
  187. package/cache/RedisQueryResultCache.js.map +1 -1
  188. package/commands/InitCommand.js +1 -1
  189. package/commands/InitCommand.js.map +1 -1
  190. package/commands/MigrationGenerateCommand.js +3 -2
  191. package/commands/MigrationGenerateCommand.js.map +1 -1
  192. package/data-source/DataSourceOptions.d.ts +2 -1
  193. package/data-source/DataSourceOptions.js.map +1 -1
  194. package/decorator/Index.js +1 -0
  195. package/decorator/Index.js.map +1 -1
  196. package/decorator/columns/PrimaryColumn.js +4 -1
  197. package/decorator/columns/PrimaryColumn.js.map +1 -1
  198. package/decorator/options/ColumnOptions.d.ts +10 -2
  199. package/decorator/options/ColumnOptions.js.map +1 -1
  200. package/decorator/options/IndexOptions.d.ts +8 -0
  201. package/decorator/options/IndexOptions.js.map +1 -1
  202. package/decorator/options/JoinColumnOptions.d.ts +4 -0
  203. package/decorator/options/JoinColumnOptions.js.map +1 -1
  204. package/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +4 -0
  205. package/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
  206. package/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts +4 -0
  207. package/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
  208. package/decorator/options/PrimaryGeneratedColumnUUIDOptions.d.ts +4 -0
  209. package/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
  210. package/decorator/relations/JoinColumn.js +1 -0
  211. package/decorator/relations/JoinColumn.js.map +1 -1
  212. package/driver/DriverFactory.js +4 -0
  213. package/driver/DriverFactory.js.map +1 -1
  214. package/driver/aurora-mysql/AuroraMysqlDriver.d.ts +1 -1
  215. package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  216. package/driver/cockroachdb/CockroachDriver.js +4 -1
  217. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  218. package/driver/cockroachdb/CockroachQueryRunner.d.ts +3 -3
  219. package/driver/cockroachdb/CockroachQueryRunner.js +233 -33
  220. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  221. package/driver/mongodb/typings.d.ts +5 -5
  222. package/driver/mongodb/typings.js.map +1 -1
  223. package/driver/mysql/MysqlDriver.d.ts +1 -0
  224. package/driver/mysql/MysqlDriver.js +94 -23
  225. package/driver/mysql/MysqlDriver.js.map +1 -1
  226. package/driver/mysql/MysqlQueryRunner.js +219 -24
  227. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  228. package/driver/oracle/OracleDriver.js +79 -15
  229. package/driver/oracle/OracleDriver.js.map +1 -1
  230. package/driver/oracle/OracleQueryRunner.d.ts +3 -3
  231. package/driver/oracle/OracleQueryRunner.js +216 -42
  232. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  233. package/driver/postgres/PostgresDriver.js +95 -18
  234. package/driver/postgres/PostgresDriver.js.map +1 -1
  235. package/driver/postgres/PostgresQueryRunner.d.ts +3 -3
  236. package/driver/postgres/PostgresQueryRunner.js +159 -59
  237. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  238. package/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +17 -0
  239. package/driver/spanner/SpannerConnectionCredentialsOptions.js +4 -0
  240. package/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -0
  241. package/driver/spanner/SpannerConnectionOptions.d.ts +120 -0
  242. package/driver/spanner/SpannerConnectionOptions.js +4 -0
  243. package/driver/spanner/SpannerConnectionOptions.js.map +1 -0
  244. package/driver/spanner/SpannerDriver.d.ts +241 -0
  245. package/driver/spanner/SpannerDriver.js +608 -0
  246. package/driver/spanner/SpannerDriver.js.map +1 -0
  247. package/driver/spanner/SpannerQueryRunner.d.ts +350 -0
  248. package/driver/spanner/SpannerQueryRunner.js +1449 -0
  249. package/driver/spanner/SpannerQueryRunner.js.map +1 -0
  250. package/driver/sqlite-abstract/AbstractSqliteDriver.js +65 -16
  251. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  252. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +218 -32
  253. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  254. package/driver/sqlserver/SqlServerDriver.d.ts +3 -1
  255. package/driver/sqlserver/SqlServerDriver.js +99 -26
  256. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  257. package/driver/sqlserver/SqlServerQueryRunner.d.ts +3 -3
  258. package/driver/sqlserver/SqlServerQueryRunner.js +251 -37
  259. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  260. package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.d.ts +1 -1
  261. package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
  262. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.d.ts +2 -2
  263. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
  264. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.d.ts +2 -2
  265. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
  266. package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.d.ts +2 -2
  267. package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -1
  268. package/driver/types/ColumnTypes.d.ts +1 -1
  269. package/driver/types/ColumnTypes.js.map +1 -1
  270. package/driver/types/DatabaseType.d.ts +1 -1
  271. package/driver/types/DatabaseType.js.map +1 -1
  272. package/entity-manager/EntityManager.js +1 -1
  273. package/entity-manager/EntityManager.js.map +1 -1
  274. package/entity-schema/EntitySchemaColumnOptions.d.ts +6 -2
  275. package/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  276. package/entity-schema/EntitySchemaIndexOptions.d.ts +8 -0
  277. package/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
  278. package/entity-schema/EntitySchemaTransformer.js +3 -0
  279. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  280. package/find-options/FindOneOptions.d.ts +1 -1
  281. package/find-options/FindOneOptions.js.map +1 -1
  282. package/find-options/FindOptionsUtils.d.ts +2 -1
  283. package/find-options/FindOptionsUtils.js +2 -1
  284. package/find-options/FindOptionsUtils.js.map +1 -1
  285. package/logger/AdvancedConsoleLogger.d.ts +1 -1
  286. package/logger/AdvancedConsoleLogger.js +1 -1
  287. package/logger/AdvancedConsoleLogger.js.map +1 -1
  288. package/metadata/ColumnMetadata.d.ts +10 -2
  289. package/metadata/ColumnMetadata.js +8 -0
  290. package/metadata/ColumnMetadata.js.map +1 -1
  291. package/metadata/EntityMetadata.js +1 -1
  292. package/metadata/EntityMetadata.js.map +1 -1
  293. package/metadata/ForeignKeyMetadata.d.ts +7 -0
  294. package/metadata/ForeignKeyMetadata.js +4 -1
  295. package/metadata/ForeignKeyMetadata.js.map +1 -1
  296. package/metadata/IndexMetadata.d.ts +8 -0
  297. package/metadata/IndexMetadata.js +9 -0
  298. package/metadata/IndexMetadata.js.map +1 -1
  299. package/metadata-args/IndexMetadataArgs.d.ts +8 -0
  300. package/metadata-args/IndexMetadataArgs.js.map +1 -1
  301. package/metadata-args/JoinColumnMetadataArgs.d.ts +4 -0
  302. package/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
  303. package/metadata-builder/EntityMetadataBuilder.js +13 -6
  304. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  305. package/metadata-builder/EntityMetadataValidator.js +17 -0
  306. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  307. package/metadata-builder/JunctionEntityMetadataBuilder.js +18 -6
  308. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  309. package/metadata-builder/RelationJoinColumnBuilder.js +2 -0
  310. package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  311. package/migration/MigrationExecutor.js +1 -1
  312. package/migration/MigrationExecutor.js.map +1 -1
  313. package/package.json +1 -1
  314. package/persistence/SubjectDatabaseEntityLoader.d.ts +1 -1
  315. package/persistence/SubjectDatabaseEntityLoader.js +1 -1
  316. package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  317. package/persistence/SubjectExecutor.js +1 -1
  318. package/persistence/SubjectExecutor.js.map +1 -1
  319. package/persistence/subject-builder/CascadesSubjectBuilder.d.ts +1 -1
  320. package/persistence/subject-builder/CascadesSubjectBuilder.js +1 -1
  321. package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  322. package/persistence/subject-builder/ManyToManySubjectBuilder.js +1 -1
  323. package/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  324. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +1 -1
  325. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  326. package/platform/PlatformTools.js +5 -0
  327. package/platform/PlatformTools.js.map +1 -1
  328. package/query-builder/InsertQueryBuilder.js +15 -3
  329. package/query-builder/InsertQueryBuilder.js.map +1 -1
  330. package/query-builder/QueryBuilder.d.ts +1 -1
  331. package/query-builder/QueryBuilder.js +15 -15
  332. package/query-builder/QueryBuilder.js.map +1 -1
  333. package/query-builder/QueryExpressionMap.d.ts +2 -2
  334. package/query-builder/QueryExpressionMap.js +1 -1
  335. package/query-builder/QueryExpressionMap.js.map +1 -1
  336. package/query-builder/ReturningResultsEntityUpdator.js +2 -2
  337. package/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  338. package/query-builder/SelectQueryBuilder.d.ts +1 -1
  339. package/query-builder/SelectQueryBuilder.js +25 -4
  340. package/query-builder/SelectQueryBuilder.js.map +1 -1
  341. package/query-builder/UpdateQueryBuilder.js +18 -7
  342. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  343. package/query-runner/BaseQueryRunner.d.ts +10 -0
  344. package/query-runner/BaseQueryRunner.js +25 -1
  345. package/query-runner/BaseQueryRunner.js.map +1 -1
  346. package/query-runner/QueryRunner.d.ts +2 -2
  347. package/query-runner/QueryRunner.js.map +1 -1
  348. package/schema-builder/RdbmsSchemaBuilder.d.ts +6 -2
  349. package/schema-builder/RdbmsSchemaBuilder.js +26 -6
  350. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  351. package/schema-builder/options/TableColumnOptions.d.ts +10 -2
  352. package/schema-builder/options/TableColumnOptions.js.map +1 -1
  353. package/schema-builder/options/TableForeignKeyOptions.d.ts +1 -1
  354. package/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
  355. package/schema-builder/options/TableIndexOptions.d.ts +8 -0
  356. package/schema-builder/options/TableIndexOptions.js.map +1 -1
  357. package/schema-builder/table/TableColumn.d.ts +6 -2
  358. package/schema-builder/table/TableColumn.js +2 -0
  359. package/schema-builder/table/TableColumn.js.map +1 -1
  360. package/schema-builder/table/TableIndex.d.ts +8 -0
  361. package/schema-builder/table/TableIndex.js +3 -0
  362. package/schema-builder/table/TableIndex.js.map +1 -1
  363. package/schema-builder/util/TableUtils.js +1 -0
  364. package/schema-builder/util/TableUtils.js.map +1 -1
  365. package/util/OrmUtils.d.ts +1 -1
  366. package/util/OrmUtils.js +4 -4
  367. package/util/OrmUtils.js.map +1 -1
  368. package/util/escapeRegExp.d.ts +1 -0
  369. package/util/escapeRegExp.js +10 -0
  370. package/util/escapeRegExp.js.map +1 -0
@@ -315,6 +315,26 @@ export class MysqlQueryRunner extends BaseQueryRunner {
315
315
  // createTable does not need separate method to create foreign keys, because it create fk's in the same query with table creation.
316
316
  if (createForeignKeys)
317
317
  table.foreignKeys.forEach((foreignKey) => downQueries.push(this.dropForeignKeySql(table, foreignKey)));
318
+ // if table has column with generated type, we must add the expression to the metadata table
319
+ const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
320
+ for (const column of generatedColumns) {
321
+ const currentDatabase = await this.getCurrentDatabase();
322
+ const insertQuery = this.insertTypeormMetadataSql({
323
+ schema: currentDatabase,
324
+ table: table.name,
325
+ type: MetadataTableType.GENERATED_COLUMN,
326
+ name: column.name,
327
+ value: column.asExpression,
328
+ });
329
+ const deleteQuery = this.deleteTypeormMetadataSql({
330
+ schema: currentDatabase,
331
+ table: table.name,
332
+ type: MetadataTableType.GENERATED_COLUMN,
333
+ name: column.name,
334
+ });
335
+ upQueries.push(insertQuery);
336
+ downQueries.push(deleteQuery);
337
+ }
318
338
  return this.executeQueries(upQueries, downQueries);
319
339
  }
320
340
  /**
@@ -339,6 +359,26 @@ export class MysqlQueryRunner extends BaseQueryRunner {
339
359
  table.indices.forEach((index) => upQueries.push(this.dropIndexSql(table, index)));
340
360
  upQueries.push(this.dropTableSql(table));
341
361
  downQueries.push(this.createTableSql(table, createForeignKeys));
362
+ // if table had columns with generated type, we must remove the expression from the metadata table
363
+ const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
364
+ for (const column of generatedColumns) {
365
+ const currentDatabase = await this.getCurrentDatabase();
366
+ const deleteQuery = this.deleteTypeormMetadataSql({
367
+ schema: currentDatabase,
368
+ table: table.name,
369
+ type: MetadataTableType.GENERATED_COLUMN,
370
+ name: column.name,
371
+ });
372
+ const insertQuery = this.insertTypeormMetadataSql({
373
+ schema: currentDatabase,
374
+ table: table.name,
375
+ type: MetadataTableType.GENERATED_COLUMN,
376
+ name: column.name,
377
+ value: column.asExpression,
378
+ });
379
+ upQueries.push(deleteQuery);
380
+ downQueries.push(insertQuery);
381
+ }
342
382
  await this.executeQueries(upQueries, downQueries);
343
383
  }
344
384
  /**
@@ -384,6 +424,10 @@ export class MysqlQueryRunner extends BaseQueryRunner {
384
424
  downQueries.push(new Query(`RENAME TABLE ${this.escapePath(newTable)} TO ${this.escapePath(oldTable)}`));
385
425
  // rename index constraints
386
426
  newTable.indices.forEach((index) => {
427
+ const oldIndexName = this.connection.namingStrategy.indexName(oldTable, index.columnNames);
428
+ // Skip renaming if Index has user defined constraint name
429
+ if (index.name !== oldIndexName)
430
+ return;
387
431
  // build new constraint name
388
432
  const columnNames = index.columnNames
389
433
  .map((column) => `\`${column}\``)
@@ -407,6 +451,10 @@ export class MysqlQueryRunner extends BaseQueryRunner {
407
451
  });
408
452
  // rename foreign key constraint
409
453
  newTable.foreignKeys.forEach((foreignKey) => {
454
+ const oldForeignKeyName = this.connection.namingStrategy.foreignKeyName(oldTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
455
+ // Skip renaming if foreign key has user defined constraint name
456
+ if (foreignKey.name !== oldForeignKeyName)
457
+ return;
410
458
  // build new constraint name
411
459
  const columnNames = foreignKey.columnNames
412
460
  .map((column) => `\`${column}\``)
@@ -484,6 +532,24 @@ export class MysqlQueryRunner extends BaseQueryRunner {
484
532
  downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} CHANGE \`${column.name}\` ${this.buildCreateColumnSql(nonGeneratedColumn, true)}`));
485
533
  }
486
534
  }
535
+ if (column.generatedType && column.asExpression) {
536
+ const currentDatabase = await this.getCurrentDatabase();
537
+ const insertQuery = this.insertTypeormMetadataSql({
538
+ schema: currentDatabase,
539
+ table: table.name,
540
+ type: MetadataTableType.GENERATED_COLUMN,
541
+ name: column.name,
542
+ value: column.asExpression,
543
+ });
544
+ const deleteQuery = this.deleteTypeormMetadataSql({
545
+ schema: currentDatabase,
546
+ table: table.name,
547
+ type: MetadataTableType.GENERATED_COLUMN,
548
+ name: column.name,
549
+ });
550
+ upQueries.push(insertQuery);
551
+ downQueries.push(deleteQuery);
552
+ }
487
553
  // create column index
488
554
  const columnIndex = clonedTable.indices.find((index) => index.columnNames.length === 1 &&
489
555
  index.columnNames[0] === column.name);
@@ -560,7 +626,12 @@ export class MysqlQueryRunner extends BaseQueryRunner {
560
626
  newColumn.generationStrategy !== "uuid") ||
561
627
  oldColumn.type !== newColumn.type ||
562
628
  oldColumn.length !== newColumn.length ||
563
- oldColumn.generatedType !== newColumn.generatedType) {
629
+ (oldColumn.generatedType &&
630
+ newColumn.generatedType &&
631
+ oldColumn.generatedType !== newColumn.generatedType) ||
632
+ (!oldColumn.generatedType &&
633
+ newColumn.generatedType === "VIRTUAL") ||
634
+ (oldColumn.generatedType === "VIRTUAL" && !newColumn.generatedType)) {
564
635
  await this.dropColumn(table, oldColumn);
565
636
  await this.addColumn(table, newColumn);
566
637
  // update cloned table
@@ -573,6 +644,10 @@ export class MysqlQueryRunner extends BaseQueryRunner {
573
644
  downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} CHANGE \`${newColumn.name}\` \`${oldColumn.name}\` ${this.buildCreateColumnSql(oldColumn, true, true)}`));
574
645
  // rename index constraints
575
646
  clonedTable.findColumnIndices(oldColumn).forEach((index) => {
647
+ const oldUniqueName = this.connection.namingStrategy.indexName(clonedTable, index.columnNames);
648
+ // Skip renaming if Index has user defined constraint name
649
+ if (index.name !== oldUniqueName)
650
+ return;
576
651
  // build new constraint name
577
652
  index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);
578
653
  index.columnNames.push(newColumn.name);
@@ -600,6 +675,10 @@ export class MysqlQueryRunner extends BaseQueryRunner {
600
675
  clonedTable
601
676
  .findColumnForeignKeys(oldColumn)
602
677
  .forEach((foreignKey) => {
678
+ const foreignKeyName = this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
679
+ // Skip renaming if foreign key has user defined constraint name
680
+ if (foreignKey.name !== foreignKeyName)
681
+ return;
603
682
  // build new constraint name
604
683
  foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);
605
684
  foreignKey.columnNames.push(newColumn.name);
@@ -636,6 +715,77 @@ export class MysqlQueryRunner extends BaseQueryRunner {
636
715
  if (this.isColumnChanged(oldColumn, newColumn, true, true)) {
637
716
  upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} CHANGE \`${oldColumn.name}\` ${this.buildCreateColumnSql(newColumn, true)}`));
638
717
  downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} CHANGE \`${newColumn.name}\` ${this.buildCreateColumnSql(oldColumn, true)}`));
718
+ if (oldColumn.generatedType && !newColumn.generatedType) {
719
+ // if column changed from generated to non-generated, delete record from typeorm metadata
720
+ const currentDatabase = await this.getCurrentDatabase();
721
+ const deleteQuery = this.deleteTypeormMetadataSql({
722
+ schema: currentDatabase,
723
+ table: table.name,
724
+ type: MetadataTableType.GENERATED_COLUMN,
725
+ name: oldColumn.name,
726
+ });
727
+ const insertQuery = this.insertTypeormMetadataSql({
728
+ schema: currentDatabase,
729
+ table: table.name,
730
+ type: MetadataTableType.GENERATED_COLUMN,
731
+ name: oldColumn.name,
732
+ value: oldColumn.asExpression,
733
+ });
734
+ upQueries.push(deleteQuery);
735
+ downQueries.push(insertQuery);
736
+ }
737
+ else if (!oldColumn.generatedType &&
738
+ newColumn.generatedType) {
739
+ // if column changed from non-generated to generated, insert record into typeorm metadata
740
+ const currentDatabase = await this.getCurrentDatabase();
741
+ const insertQuery = this.insertTypeormMetadataSql({
742
+ schema: currentDatabase,
743
+ table: table.name,
744
+ type: MetadataTableType.GENERATED_COLUMN,
745
+ name: newColumn.name,
746
+ value: newColumn.asExpression,
747
+ });
748
+ const deleteQuery = this.deleteTypeormMetadataSql({
749
+ schema: currentDatabase,
750
+ table: table.name,
751
+ type: MetadataTableType.GENERATED_COLUMN,
752
+ name: newColumn.name,
753
+ });
754
+ upQueries.push(insertQuery);
755
+ downQueries.push(deleteQuery);
756
+ }
757
+ else if (oldColumn.asExpression !== newColumn.asExpression) {
758
+ // if only expression changed, just update it in typeorm_metadata table
759
+ const currentDatabase = await this.getCurrentDatabase();
760
+ const updateQuery = this.connection
761
+ .createQueryBuilder()
762
+ .update(this.getTypeormMetadataTableName())
763
+ .set({ value: newColumn.asExpression })
764
+ .where("`type` = :type", {
765
+ type: MetadataTableType.GENERATED_COLUMN,
766
+ })
767
+ .andWhere("`name` = :name", { name: oldColumn.name })
768
+ .andWhere("`schema` = :schema", {
769
+ schema: currentDatabase,
770
+ })
771
+ .andWhere("`table` = :table", { table: table.name })
772
+ .getQueryAndParameters();
773
+ const revertUpdateQuery = this.connection
774
+ .createQueryBuilder()
775
+ .update(this.getTypeormMetadataTableName())
776
+ .set({ value: oldColumn.asExpression })
777
+ .where("`type` = :type", {
778
+ type: MetadataTableType.GENERATED_COLUMN,
779
+ })
780
+ .andWhere("`name` = :name", { name: newColumn.name })
781
+ .andWhere("`schema` = :schema", {
782
+ schema: currentDatabase,
783
+ })
784
+ .andWhere("`table` = :table", { table: table.name })
785
+ .getQueryAndParameters();
786
+ upQueries.push(new Query(updateQuery[0], updateQuery[1]));
787
+ downQueries.push(new Query(revertUpdateQuery[0], revertUpdateQuery[1]));
788
+ }
639
789
  }
640
790
  if (newColumn.isPrimary !== oldColumn.isPrimary) {
641
791
  // if table have generated column, we must drop AUTO_INCREMENT before changing primary constraints.
@@ -814,6 +964,24 @@ export class MysqlQueryRunner extends BaseQueryRunner {
814
964
  }
815
965
  upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP COLUMN \`${column.name}\``));
816
966
  downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD ${this.buildCreateColumnSql(column, true)}`));
967
+ if (column.generatedType && column.asExpression) {
968
+ const currentDatabase = await this.getCurrentDatabase();
969
+ const deleteQuery = this.deleteTypeormMetadataSql({
970
+ schema: currentDatabase,
971
+ table: table.name,
972
+ type: MetadataTableType.GENERATED_COLUMN,
973
+ name: column.name,
974
+ });
975
+ const insertQuery = this.insertTypeormMetadataSql({
976
+ schema: currentDatabase,
977
+ table: table.name,
978
+ type: MetadataTableType.GENERATED_COLUMN,
979
+ name: column.name,
980
+ value: column.asExpression,
981
+ });
982
+ upQueries.push(deleteQuery);
983
+ downQueries.push(insertQuery);
984
+ }
817
985
  await this.executeQueries(upQueries, downQueries);
818
986
  clonedTable.removeColumn(column);
819
987
  this.replaceCachedTable(table, clonedTable);
@@ -1349,11 +1517,12 @@ export class MysqlQueryRunner extends BaseQueryRunner {
1349
1517
  table.database = dbTable["TABLE_SCHEMA"];
1350
1518
  table.name = this.driver.buildTableName(dbTable["TABLE_NAME"], undefined, db);
1351
1519
  // create columns from the loaded columns
1352
- table.columns = dbColumns
1353
- .filter((dbColumn) => dbColumn["TABLE_NAME"] === dbTable["TABLE_NAME"] &&
1520
+ table.columns = await Promise.all(dbColumns
1521
+ .filter((dbColumn) => dbColumn["TABLE_NAME"] ===
1522
+ dbTable["TABLE_NAME"] &&
1354
1523
  dbColumn["TABLE_SCHEMA"] ===
1355
1524
  dbTable["TABLE_SCHEMA"])
1356
- .map((dbColumn) => {
1525
+ .map(async (dbColumn) => {
1357
1526
  const columnUniqueIndices = dbIndices.filter((dbIndex) => {
1358
1527
  return (dbIndex["TABLE_NAME"] ===
1359
1528
  dbTable["TABLE_NAME"] &&
@@ -1361,7 +1530,8 @@ export class MysqlQueryRunner extends BaseQueryRunner {
1361
1530
  dbTable["TABLE_SCHEMA"] &&
1362
1531
  dbIndex["COLUMN_NAME"] ===
1363
1532
  dbColumn["COLUMN_NAME"] &&
1364
- parseInt(dbIndex["NON_UNIQUE"], 10) === 0);
1533
+ parseInt(dbIndex["NON_UNIQUE"], 10) ===
1534
+ 0);
1365
1535
  });
1366
1536
  const tableMetadata = this.connection.entityMetadatas.find((metadata) => this.getTablePath(table) ===
1367
1537
  this.getTablePath(metadata));
@@ -1382,9 +1552,11 @@ export class MysqlQueryRunner extends BaseQueryRunner {
1382
1552
  });
1383
1553
  const tableColumn = new TableColumn();
1384
1554
  tableColumn.name = dbColumn["COLUMN_NAME"];
1385
- tableColumn.type = dbColumn["DATA_TYPE"].toLowerCase();
1555
+ tableColumn.type =
1556
+ dbColumn["DATA_TYPE"].toLowerCase();
1386
1557
  tableColumn.zerofill =
1387
- dbColumn["COLUMN_TYPE"].indexOf("zerofill") !== -1;
1558
+ dbColumn["COLUMN_TYPE"].indexOf("zerofill") !==
1559
+ -1;
1388
1560
  tableColumn.unsigned = tableColumn.zerofill
1389
1561
  ? true
1390
1562
  : dbColumn["COLUMN_TYPE"].indexOf("unsigned") !== -1;
@@ -1398,7 +1570,8 @@ export class MysqlQueryRunner extends BaseQueryRunner {
1398
1570
  }
1399
1571
  if (dbColumn["COLUMN_DEFAULT"] === null ||
1400
1572
  dbColumn["COLUMN_DEFAULT"] === undefined ||
1401
- (isMariaDb && dbColumn["COLUMN_DEFAULT"] === "NULL")) {
1573
+ (isMariaDb &&
1574
+ dbColumn["COLUMN_DEFAULT"] === "NULL")) {
1402
1575
  tableColumn.default = undefined;
1403
1576
  }
1404
1577
  else if (/^CURRENT_TIMESTAMP(\([0-9]*\))?$/i.test(dbColumn["COLUMN_DEFAULT"])) {
@@ -1420,23 +1593,41 @@ export class MysqlQueryRunner extends BaseQueryRunner {
1420
1593
  // New versions of MariaDB return expressions in lowercase. We need to set it in
1421
1594
  // uppercase so the comparison in MysqlDriver#compareExtraValues does not fail.
1422
1595
  tableColumn.onUpdate = dbColumn["EXTRA"]
1423
- .substring(dbColumn["EXTRA"].indexOf("on update") + 10)
1596
+ .substring(dbColumn["EXTRA"].indexOf("on update") +
1597
+ 10)
1424
1598
  .toUpperCase();
1425
1599
  }
1426
1600
  if (dbColumn["GENERATION_EXPRESSION"]) {
1427
- tableColumn.asExpression =
1428
- dbColumn["GENERATION_EXPRESSION"];
1429
1601
  tableColumn.generatedType =
1430
1602
  dbColumn["EXTRA"].indexOf("VIRTUAL") !== -1
1431
1603
  ? "VIRTUAL"
1432
1604
  : "STORED";
1605
+ // We cannot relay on information_schema.columns.generation_expression, because it is formatted different.
1606
+ const asExpressionQuery = await this.selectTypeormMetadataSql({
1607
+ schema: dbTable["TABLE_SCHEMA"],
1608
+ table: dbTable["TABLE_NAME"],
1609
+ type: MetadataTableType.GENERATED_COLUMN,
1610
+ name: tableColumn.name,
1611
+ });
1612
+ const results = await this.query(asExpressionQuery.query, asExpressionQuery.parameters);
1613
+ if (results[0] && results[0].value) {
1614
+ tableColumn.asExpression = results[0].value;
1615
+ }
1616
+ else {
1617
+ tableColumn.asExpression = "";
1618
+ }
1433
1619
  }
1434
1620
  tableColumn.isUnique =
1435
1621
  columnUniqueIndices.length > 0 &&
1436
1622
  !hasIgnoredIndex &&
1437
1623
  !isConstraintComposite;
1438
- tableColumn.isNullable =
1439
- dbColumn["IS_NULLABLE"] === "YES";
1624
+ if (isMariaDb && tableColumn.generatedType) {
1625
+ // do nothing - MariaDB does not support NULL/NOT NULL expressions for generated columns
1626
+ }
1627
+ else {
1628
+ tableColumn.isNullable =
1629
+ dbColumn["IS_NULLABLE"] === "YES";
1630
+ }
1440
1631
  tableColumn.isPrimary = dbPrimaryKeys.some((dbPrimaryKey) => {
1441
1632
  return (dbPrimaryKey["TABLE_NAME"] ===
1442
1633
  dbColumn["TABLE_NAME"] &&
@@ -1446,11 +1637,13 @@ export class MysqlQueryRunner extends BaseQueryRunner {
1446
1637
  dbColumn["COLUMN_NAME"]);
1447
1638
  });
1448
1639
  tableColumn.isGenerated =
1449
- dbColumn["EXTRA"].indexOf("auto_increment") !== -1;
1640
+ dbColumn["EXTRA"].indexOf("auto_increment") !==
1641
+ -1;
1450
1642
  if (tableColumn.isGenerated)
1451
1643
  tableColumn.generationStrategy = "increment";
1452
1644
  tableColumn.comment =
1453
- typeof dbColumn["COLUMN_COMMENT"] === "string" &&
1645
+ typeof dbColumn["COLUMN_COMMENT"] ===
1646
+ "string" &&
1454
1647
  dbColumn["COLUMN_COMMENT"].length === 0
1455
1648
  ? undefined
1456
1649
  : dbColumn["COLUMN_COMMENT"];
@@ -1462,16 +1655,18 @@ export class MysqlQueryRunner extends BaseQueryRunner {
1462
1655
  : dbColumn["CHARACTER_SET_NAME"];
1463
1656
  if (dbColumn["COLLATION_NAME"])
1464
1657
  tableColumn.collation =
1465
- dbColumn["COLLATION_NAME"] === defaultCollation
1658
+ dbColumn["COLLATION_NAME"] ===
1659
+ defaultCollation
1466
1660
  ? undefined
1467
1661
  : dbColumn["COLLATION_NAME"];
1468
1662
  // check only columns that have length property
1469
1663
  if (this.driver.withLengthColumnTypes.indexOf(tableColumn.type) !== -1 &&
1470
1664
  dbColumn["CHARACTER_MAXIMUM_LENGTH"]) {
1471
1665
  const length = dbColumn["CHARACTER_MAXIMUM_LENGTH"].toString();
1472
- tableColumn.length = !this.isDefaultColumnLength(table, tableColumn, length)
1473
- ? length
1474
- : "";
1666
+ tableColumn.length =
1667
+ !this.isDefaultColumnLength(table, tableColumn, length)
1668
+ ? length
1669
+ : "";
1475
1670
  }
1476
1671
  if (tableColumn.type === "decimal" ||
1477
1672
  tableColumn.type === "double" ||
@@ -1504,7 +1699,7 @@ export class MysqlQueryRunner extends BaseQueryRunner {
1504
1699
  tableColumn.precision = parseInt(dbColumn["DATETIME_PRECISION"]);
1505
1700
  }
1506
1701
  return tableColumn;
1507
- });
1702
+ }));
1508
1703
  // find foreign key constraints of table, group them by constraint name and build TableForeignKey.
1509
1704
  const tableForeignKeyConstraints = OrmUtils.uniq(dbForeignKeys.filter((dbForeignKey) => {
1510
1705
  return (dbForeignKey["TABLE_NAME"] ===
@@ -1801,6 +1996,10 @@ export class MysqlQueryRunner extends BaseQueryRunner {
1801
1996
  else {
1802
1997
  c = `\`${column.name}\` ${this.connection.driver.createFullType(column)}`;
1803
1998
  }
1999
+ if (column.charset)
2000
+ c += ` CHARACTER SET "${column.charset}"`;
2001
+ if (column.collation)
2002
+ c += ` COLLATE "${column.collation}"`;
1804
2003
  if (column.asExpression)
1805
2004
  c += ` AS (${column.asExpression}) ${column.generatedType ? column.generatedType : "VIRTUAL"}`;
1806
2005
  // if you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to that column.
@@ -1814,10 +2013,6 @@ export class MysqlQueryRunner extends BaseQueryRunner {
1814
2013
  c += ` (${column.enum
1815
2014
  .map((value) => "'" + value.replace(/'/g, "''") + "'")
1816
2015
  .join(", ")})`;
1817
- if (column.charset)
1818
- c += ` CHARACTER SET "${column.charset}"`;
1819
- if (column.collation)
1820
- c += ` COLLATE "${column.collation}"`;
1821
2016
  const isMariaDb = this.driver.options.type === "mariadb";
1822
2017
  if (isMariaDb &&
1823
2018
  column.asExpression &&