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
@@ -383,6 +383,30 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
383
383
  downQueries.push(this.dropIndexSql(table, index));
384
384
  });
385
385
  }
386
+ // if table have column with generated type, we must add the expression to the metadata table
387
+ const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
388
+ for (const column of generatedColumns) {
389
+ const currentSchema = await this.getCurrentSchema();
390
+ let { schema } = this.driver.parseTableName(table);
391
+ if (!schema) {
392
+ schema = currentSchema;
393
+ }
394
+ const insertQuery = this.insertTypeormMetadataSql({
395
+ schema: schema,
396
+ table: table.name,
397
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
398
+ name: column.name,
399
+ value: column.asExpression,
400
+ });
401
+ const deleteQuery = this.deleteTypeormMetadataSql({
402
+ schema: schema,
403
+ table: table.name,
404
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
405
+ name: column.name,
406
+ });
407
+ upQueries.push(insertQuery);
408
+ downQueries.push(deleteQuery);
409
+ }
386
410
  await this.executeQueries(upQueries, downQueries);
387
411
  }
388
412
  /**
@@ -420,6 +444,30 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
420
444
  upQueries.push(new Query_1.Query(`DROP SEQUENCE ${this.escapePath(this.buildSequencePath(table, column))}`));
421
445
  downQueries.push(new Query_1.Query(`CREATE SEQUENCE ${this.escapePath(this.buildSequencePath(table, column))}`));
422
446
  });
447
+ // if table had columns with generated type, we must remove the expression from the metadata table
448
+ const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
449
+ for (const column of generatedColumns) {
450
+ const currentSchema = await this.getCurrentSchema();
451
+ let { schema } = this.driver.parseTableName(table);
452
+ if (!schema) {
453
+ schema = currentSchema;
454
+ }
455
+ const deleteQuery = this.deleteTypeormMetadataSql({
456
+ schema: schema,
457
+ table: table.name,
458
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
459
+ name: column.name,
460
+ });
461
+ const insertQuery = this.insertTypeormMetadataSql({
462
+ schema: schema,
463
+ table: table.name,
464
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
465
+ name: column.name,
466
+ value: column.asExpression,
467
+ });
468
+ upQueries.push(deleteQuery);
469
+ downQueries.push(insertQuery);
470
+ }
423
471
  await this.executeQueries(upQueries, downQueries);
424
472
  }
425
473
  /**
@@ -465,7 +513,8 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
465
513
  upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(oldTable)} RENAME TO "${newTableName}"`));
466
514
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(newTable)} RENAME TO "${oldTableName}"`));
467
515
  // rename column primary key constraint
468
- if (newTable.primaryColumns.length > 0) {
516
+ if (newTable.primaryColumns.length > 0 &&
517
+ !newTable.primaryColumns[0].primaryKeyConstraintName) {
469
518
  const columnNames = newTable.primaryColumns.map((column) => column.name);
470
519
  const oldPkName = this.connection.namingStrategy.primaryKeyName(oldTable, columnNames);
471
520
  const newPkName = this.connection.namingStrategy.primaryKeyName(newTable, columnNames);
@@ -474,6 +523,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
474
523
  }
475
524
  // rename unique constraints
476
525
  newTable.uniques.forEach((unique) => {
526
+ const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(oldTable, unique.columnNames);
527
+ // Skip renaming if Unique has user defined constraint name
528
+ if (unique.name !== oldUniqueName)
529
+ return;
477
530
  // build new constraint name
478
531
  const newUniqueName = this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames);
479
532
  // build queries
@@ -484,6 +537,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
484
537
  });
485
538
  // rename index constraints
486
539
  newTable.indices.forEach((index) => {
540
+ const oldIndexName = this.connection.namingStrategy.indexName(oldTable, index.columnNames, index.where);
541
+ // Skip renaming if Index has user defined constraint name
542
+ if (index.name !== oldIndexName)
543
+ return;
487
544
  // build new constraint name
488
545
  const { schema } = this.driver.parseTableName(newTable);
489
546
  const newIndexName = this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);
@@ -501,6 +558,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
501
558
  });
502
559
  // rename foreign key constraints
503
560
  newTable.foreignKeys.forEach((foreignKey) => {
561
+ const oldForeignKeyName = this.connection.namingStrategy.foreignKeyName(oldTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
562
+ // Skip renaming if foreign key has user defined constraint name
563
+ if (foreignKey.name !== oldForeignKeyName)
564
+ return;
504
565
  // build new constraint name
505
566
  const newForeignKeyName = this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
506
567
  // build queries
@@ -530,9 +591,11 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
530
591
  if (column.isPrimary) {
531
592
  const primaryColumns = clonedTable.primaryColumns;
532
593
  // if table already have primary key, me must drop it and recreate again
533
- // todo: altering pk is not supported yet https://github.com/cockroachdb/cockroach/issues/19141
594
+ // todo: https://go.crdb.dev/issue-v/48026/v21.1
534
595
  if (primaryColumns.length > 0) {
535
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
596
+ const pkName = primaryColumns[0].primaryKeyConstraintName
597
+ ? primaryColumns[0].primaryKeyConstraintName
598
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
536
599
  const columnNames = primaryColumns
537
600
  .map((column) => `"${column.name}"`)
538
601
  .join(", ");
@@ -540,13 +603,37 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
540
603
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${pkName}" PRIMARY KEY (${columnNames})`));
541
604
  }
542
605
  primaryColumns.push(column);
543
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
606
+ const pkName = primaryColumns[0].primaryKeyConstraintName
607
+ ? primaryColumns[0].primaryKeyConstraintName
608
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
544
609
  const columnNames = primaryColumns
545
610
  .map((column) => `"${column.name}"`)
546
611
  .join(", ");
547
612
  upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${pkName}" PRIMARY KEY (${columnNames})`));
548
613
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${pkName}"`));
549
614
  }
615
+ if (column.generatedType && column.asExpression) {
616
+ const currentSchema = await this.getCurrentSchema();
617
+ let { schema } = this.driver.parseTableName(table);
618
+ if (!schema) {
619
+ schema = currentSchema;
620
+ }
621
+ const insertQuery = this.insertTypeormMetadataSql({
622
+ schema: schema,
623
+ table: table.name,
624
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
625
+ name: column.name,
626
+ value: column.asExpression,
627
+ });
628
+ const deleteQuery = this.deleteTypeormMetadataSql({
629
+ schema: schema,
630
+ table: table.name,
631
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
632
+ name: column.name,
633
+ });
634
+ upQueries.push(insertQuery);
635
+ downQueries.push(deleteQuery);
636
+ }
550
637
  // create column index
551
638
  const columnIndex = clonedTable.indices.find((index) => index.columnNames.length === 1 &&
552
639
  index.columnNames[0] === column.name);
@@ -631,7 +718,9 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
631
718
  if (!oldColumn)
632
719
  throw new error_1.TypeORMError(`Column "${oldTableColumnOrName}" was not found in the "${table.name}" table.`);
633
720
  if (oldColumn.type !== newColumn.type ||
634
- oldColumn.length !== newColumn.length) {
721
+ oldColumn.length !== newColumn.length ||
722
+ oldColumn.generatedType !== newColumn.generatedType ||
723
+ oldColumn.asExpression !== newColumn.asExpression) {
635
724
  // To avoid data conversion, we just recreate column
636
725
  await this.dropColumn(table, oldColumn);
637
726
  await this.addColumn(table, newColumn);
@@ -644,7 +733,8 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
644
733
  upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} RENAME COLUMN "${oldColumn.name}" TO "${newColumn.name}"`));
645
734
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} RENAME COLUMN "${newColumn.name}" TO "${oldColumn.name}"`));
646
735
  // rename column primary key constraint
647
- if (oldColumn.isPrimary === true) {
736
+ if (oldColumn.isPrimary === true &&
737
+ !oldColumn.primaryKeyConstraintName) {
648
738
  const primaryColumns = clonedTable.primaryColumns;
649
739
  // build old primary constraint name
650
740
  const columnNames = primaryColumns.map((column) => column.name);
@@ -659,6 +749,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
659
749
  }
660
750
  // rename unique constraints
661
751
  clonedTable.findColumnUniques(oldColumn).forEach((unique) => {
752
+ const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(clonedTable, unique.columnNames);
753
+ // Skip renaming if Unique has user defined constraint name
754
+ if (unique.name !== oldUniqueName)
755
+ return;
662
756
  // build new constraint name
663
757
  unique.columnNames.splice(unique.columnNames.indexOf(oldColumn.name), 1);
664
758
  unique.columnNames.push(newColumn.name);
@@ -671,6 +765,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
671
765
  });
672
766
  // rename index constraints
673
767
  clonedTable.findColumnIndices(oldColumn).forEach((index) => {
768
+ const oldIndexName = this.connection.namingStrategy.indexName(clonedTable, index.columnNames, index.where);
769
+ // Skip renaming if Index has user defined constraint name
770
+ if (index.name !== oldIndexName)
771
+ return;
674
772
  // build new constraint name
675
773
  index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);
676
774
  index.columnNames.push(newColumn.name);
@@ -692,6 +790,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
692
790
  clonedTable
693
791
  .findColumnForeignKeys(oldColumn)
694
792
  .forEach((foreignKey) => {
793
+ const foreignKeyName = this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
794
+ // Skip renaming if foreign key has user defined constraint name
795
+ if (foreignKey.name !== foreignKeyName)
796
+ return;
695
797
  // build new constraint name
696
798
  foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);
697
799
  foreignKey.columnNames.push(newColumn.name);
@@ -730,7 +832,9 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
730
832
  const primaryColumns = clonedTable.primaryColumns;
731
833
  // if primary column state changed, we must always drop existed constraint.
732
834
  if (primaryColumns.length > 0) {
733
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
835
+ const pkName = primaryColumns[0].primaryKeyConstraintName
836
+ ? primaryColumns[0].primaryKeyConstraintName
837
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
734
838
  const columnNames = primaryColumns
735
839
  .map((column) => `"${column.name}"`)
736
840
  .join(", ");
@@ -742,7 +846,9 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
742
846
  // update column in table
743
847
  const column = clonedTable.columns.find((column) => column.name === newColumn.name);
744
848
  column.isPrimary = true;
745
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
849
+ const pkName = primaryColumns[0].primaryKeyConstraintName
850
+ ? primaryColumns[0].primaryKeyConstraintName
851
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
746
852
  const columnNames = primaryColumns
747
853
  .map((column) => `"${column.name}"`)
748
854
  .join(", ");
@@ -757,7 +863,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
757
863
  column.isPrimary = false;
758
864
  // if we have another primary keys, we must recreate constraint.
759
865
  if (primaryColumns.length > 0) {
760
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
866
+ const pkName = primaryColumns[0]
867
+ .primaryKeyConstraintName
868
+ ? primaryColumns[0].primaryKeyConstraintName
869
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
761
870
  const columnNames = primaryColumns
762
871
  .map((column) => `"${column.name}"`)
763
872
  .join(", ");
@@ -852,9 +961,11 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
852
961
  const upQueries = [];
853
962
  const downQueries = [];
854
963
  // drop primary key constraint
855
- // todo: altering pk is not supported yet https://github.com/cockroachdb/cockroach/issues/19141
964
+ // todo: https://go.crdb.dev/issue-v/48026/v21.1
856
965
  if (column.isPrimary) {
857
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
966
+ const pkName = column.primaryKeyConstraintName
967
+ ? column.primaryKeyConstraintName
968
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
858
969
  const columnNames = clonedTable.primaryColumns
859
970
  .map((primaryColumn) => `"${primaryColumn.name}"`)
860
971
  .join(", ");
@@ -865,7 +976,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
865
976
  tableColumn.isPrimary = false;
866
977
  // if primary key have multiple columns, we must recreate it without dropped column
867
978
  if (clonedTable.primaryColumns.length > 0) {
868
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
979
+ const pkName = clonedTable.primaryColumns[0]
980
+ .primaryKeyConstraintName
981
+ ? clonedTable.primaryColumns[0].primaryKeyConstraintName
982
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
869
983
  const columnNames = clonedTable.primaryColumns
870
984
  .map((primaryColumn) => `"${primaryColumn.name}"`)
871
985
  .join(", ");
@@ -904,6 +1018,28 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
904
1018
  upQueries.push(new Query_1.Query(`DROP SEQUENCE ${this.escapePath(this.buildSequencePath(table, column))}`));
905
1019
  downQueries.push(new Query_1.Query(`CREATE SEQUENCE ${this.escapePath(this.buildSequencePath(table, column))}`));
906
1020
  }
1021
+ if (column.generatedType && column.asExpression) {
1022
+ const currentSchema = await this.getCurrentSchema();
1023
+ let { schema } = this.driver.parseTableName(table);
1024
+ if (!schema) {
1025
+ schema = currentSchema;
1026
+ }
1027
+ const deleteQuery = this.deleteTypeormMetadataSql({
1028
+ schema: schema,
1029
+ table: table.name,
1030
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
1031
+ name: column.name,
1032
+ });
1033
+ const insertQuery = this.insertTypeormMetadataSql({
1034
+ schema: schema,
1035
+ table: table.name,
1036
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
1037
+ name: column.name,
1038
+ value: column.asExpression,
1039
+ });
1040
+ upQueries.push(deleteQuery);
1041
+ downQueries.push(insertQuery);
1042
+ }
907
1043
  await this.executeQueries(upQueries, downQueries);
908
1044
  clonedTable.removeColumn(column);
909
1045
  this.replaceCachedTable(table, clonedTable);
@@ -919,12 +1055,12 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
919
1055
  /**
920
1056
  * Creates a new primary key.
921
1057
  */
922
- async createPrimaryKey(tableOrName, columnNames) {
1058
+ async createPrimaryKey(tableOrName, columnNames, constraintName) {
923
1059
  const table = InstanceChecker_1.InstanceChecker.isTable(tableOrName)
924
1060
  ? tableOrName
925
1061
  : await this.getCachedTable(tableOrName);
926
1062
  const clonedTable = table.clone();
927
- const up = this.createPrimaryKeySql(table, columnNames);
1063
+ const up = this.createPrimaryKeySql(table, columnNames, constraintName);
928
1064
  // mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.
929
1065
  clonedTable.columns.forEach((column) => {
930
1066
  if (columnNames.find((columnName) => columnName === column.name))
@@ -948,7 +1084,9 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
948
1084
  // if table already have primary columns, we must drop them.
949
1085
  const primaryColumns = clonedTable.primaryColumns;
950
1086
  if (primaryColumns.length > 0) {
951
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
1087
+ const pkName = primaryColumns[0].primaryKeyConstraintName
1088
+ ? primaryColumns[0].primaryKeyConstraintName
1089
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
952
1090
  const columnNamesString = primaryColumns
953
1091
  .map((column) => `"${column.name}"`)
954
1092
  .join(", ");
@@ -959,7 +1097,9 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
959
1097
  clonedTable.columns
960
1098
  .filter((column) => columnNames.indexOf(column.name) !== -1)
961
1099
  .forEach((column) => (column.isPrimary = true));
962
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
1100
+ const pkName = primaryColumns[0].primaryKeyConstraintName
1101
+ ? primaryColumns[0].primaryKeyConstraintName
1102
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
963
1103
  const columnNamesString = columnNames
964
1104
  .map((columnName) => `"${columnName}"`)
965
1105
  .join(", ");
@@ -971,12 +1111,12 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
971
1111
  /**
972
1112
  * Drops a primary key.
973
1113
  */
974
- async dropPrimaryKey(tableOrName) {
1114
+ async dropPrimaryKey(tableOrName, constraintName) {
975
1115
  const table = InstanceChecker_1.InstanceChecker.isTable(tableOrName)
976
1116
  ? tableOrName
977
1117
  : await this.getCachedTable(tableOrName);
978
1118
  const up = this.dropPrimaryKeySql(table);
979
- const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name));
1119
+ const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name), constraintName);
980
1120
  await this.executeQueries(up, down);
981
1121
  table.primaryColumns.forEach((column) => {
982
1122
  column.isPrimary = false;
@@ -1338,12 +1478,14 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1338
1478
  return `("table_schema" = '${table_schema}' AND "table_name" = '${table_name}')`;
1339
1479
  })
1340
1480
  .join(" OR ");
1341
- const columnsSql = `
1342
- SELECT
1343
- *,
1344
- pg_catalog.col_description(('"' || table_catalog || '"."' || table_schema || '"."' || table_name || '"')::regclass::oid, ordinal_position) as description
1345
- FROM "information_schema"."columns"
1346
- WHERE "is_hidden" = 'NO' AND ` + columnsCondiiton;
1481
+ const columnsSql = `SELECT "columns".*, "attr"."attgenerated" as "generated_type", ` +
1482
+ `pg_catalog.col_description(('"' || table_catalog || '"."' || table_schema || '"."' || table_name || '"')::regclass::oid, ordinal_position) as description ` +
1483
+ `FROM "information_schema"."columns" ` +
1484
+ `LEFT JOIN "pg_class" AS "cls" ON "cls"."relname" = "table_name" ` +
1485
+ `LEFT JOIN "pg_namespace" AS "ns" ON "ns"."oid" = "cls"."relnamespace" AND "ns"."nspname" = "table_schema" ` +
1486
+ `LEFT JOIN "pg_attribute" AS "attr" ON "attr"."attrelid" = "cls"."oid" AND "attr"."attname" = "column_name" AND "attr"."attnum" = "ordinal_position" ` +
1487
+ `WHERE "is_hidden" = 'NO' AND ` +
1488
+ columnsCondiiton;
1347
1489
  const constraintsCondition = dbTables
1348
1490
  .map(({ table_name, table_schema }) => {
1349
1491
  return `("ns"."nspname" = '${table_schema}' AND "t"."relname" = '${table_name}')`;
@@ -1477,7 +1619,30 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1477
1619
  }
1478
1620
  tableColumn.isNullable =
1479
1621
  dbColumn["is_nullable"] === "YES";
1480
- tableColumn.isPrimary = !!columnConstraints.find((constraint) => constraint["constraint_type"] === "PRIMARY");
1622
+ const primaryConstraint = columnConstraints.find((constraint) => constraint["constraint_type"] === "PRIMARY");
1623
+ if (primaryConstraint) {
1624
+ tableColumn.isPrimary = true;
1625
+ // find another columns involved in primary key constraint
1626
+ const anotherPrimaryConstraints = dbConstraints.filter((constraint) => constraint["table_name"] ===
1627
+ dbColumn["table_name"] &&
1628
+ constraint["table_schema"] ===
1629
+ dbColumn["table_schema"] &&
1630
+ constraint["column_name"] !==
1631
+ dbColumn["column_name"] &&
1632
+ constraint["constraint_type"] ===
1633
+ "PRIMARY");
1634
+ // collect all column names
1635
+ const columnNames = anotherPrimaryConstraints.map((constraint) => constraint["column_name"]);
1636
+ columnNames.push(dbColumn["column_name"]);
1637
+ // build default primary key constraint name
1638
+ const pkName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
1639
+ // if primary key has user-defined constraint name, write it in table column
1640
+ if (primaryConstraint["constraint_name"] !==
1641
+ pkName) {
1642
+ tableColumn.primaryKeyConstraintName =
1643
+ primaryConstraint["constraint_name"];
1644
+ }
1645
+ }
1481
1646
  const uniqueConstraints = columnConstraints.filter((constraint) => constraint["constraint_type"] === "UNIQUE");
1482
1647
  const isConstraintComposite = uniqueConstraints.every((uniqueConstraint) => {
1483
1648
  return dbConstraints.some((dbConstraint) => dbConstraint["constraint_type"] ===
@@ -1512,6 +1677,27 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1512
1677
  tableColumn.default.replace(/^(-?[\d\.]+)$/, "($1)");
1513
1678
  }
1514
1679
  }
1680
+ if (dbColumn["is_generated"] === "YES" &&
1681
+ dbColumn["generation_expression"]) {
1682
+ tableColumn.generatedType =
1683
+ dbColumn["generated_type"] === "s"
1684
+ ? "STORED"
1685
+ : "VIRTUAL";
1686
+ // We cannot relay on information_schema.columns.generation_expression, because it is formatted different.
1687
+ const asExpressionQuery = await this.selectTypeormMetadataSql({
1688
+ schema: dbTable["table_schema"],
1689
+ table: dbTable["table_name"],
1690
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
1691
+ name: tableColumn.name,
1692
+ });
1693
+ const results = await this.query(asExpressionQuery.query, asExpressionQuery.parameters);
1694
+ if (results[0] && results[0].value) {
1695
+ tableColumn.asExpression = results[0].value;
1696
+ }
1697
+ else {
1698
+ tableColumn.asExpression = "";
1699
+ }
1700
+ }
1515
1701
  tableColumn.comment =
1516
1702
  dbColumn["description"] == null
1517
1703
  ? undefined
@@ -1687,7 +1873,9 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1687
1873
  }
1688
1874
  const primaryColumns = table.columns.filter((column) => column.isPrimary);
1689
1875
  if (primaryColumns.length > 0) {
1690
- const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
1876
+ const primaryKeyName = primaryColumns[0].primaryKeyConstraintName
1877
+ ? primaryColumns[0].primaryKeyConstraintName
1878
+ : this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
1691
1879
  const columnNames = primaryColumns
1692
1880
  .map((column) => `"${column.name}"`)
1693
1881
  .join(", ");
@@ -1775,8 +1963,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1775
1963
  /**
1776
1964
  * Builds create primary key sql.
1777
1965
  */
1778
- createPrimaryKeySql(table, columnNames) {
1779
- const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
1966
+ createPrimaryKeySql(table, columnNames, constraintName) {
1967
+ const primaryKeyName = constraintName
1968
+ ? constraintName
1969
+ : this.connection.namingStrategy.primaryKeyName(table, columnNames);
1780
1970
  const columnNamesString = columnNames
1781
1971
  .map((columnName) => `"${columnName}"`)
1782
1972
  .join(", ");
@@ -1786,8 +1976,13 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1786
1976
  * Builds drop primary key sql.
1787
1977
  */
1788
1978
  dropPrimaryKeySql(table) {
1979
+ if (!table.primaryColumns.length)
1980
+ throw new error_1.TypeORMError(`Table ${table} has no primary keys.`);
1789
1981
  const columnNames = table.primaryColumns.map((column) => column.name);
1790
- const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
1982
+ const constraintName = table.primaryColumns[0].primaryKeyConstraintName;
1983
+ const primaryKeyName = constraintName
1984
+ ? constraintName
1985
+ : this.connection.namingStrategy.primaryKeyName(table, columnNames);
1791
1986
  return new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${primaryKeyName}"`);
1792
1987
  }
1793
1988
  /**
@@ -1904,10 +2099,15 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1904
2099
  }
1905
2100
  if (!column.isGenerated)
1906
2101
  c += " " + this.connection.driver.createFullType(column);
1907
- if (column.charset)
1908
- c += ' CHARACTER SET "' + column.charset + '"';
1909
- if (column.collation)
1910
- c += ' COLLATE "' + column.collation + '"';
2102
+ if (column.asExpression) {
2103
+ c += ` AS (${column.asExpression}) ${column.generatedType ? column.generatedType : "VIRTUAL"}`;
2104
+ }
2105
+ else {
2106
+ if (column.charset)
2107
+ c += ' CHARACTER SET "' + column.charset + '"';
2108
+ if (column.collation)
2109
+ c += ' COLLATE "' + column.collation + '"';
2110
+ }
1911
2111
  if (!column.isNullable)
1912
2112
  c += " NOT NULL";
1913
2113
  if (!column.isGenerated &&