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
@@ -389,7 +389,6 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
389
389
  type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
390
390
  name: column.name,
391
391
  });
392
- upQueries.push(deleteQuery);
393
392
  upQueries.push(insertQuery);
394
393
  downQueries.push(deleteQuery);
395
394
  }
@@ -437,6 +436,30 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
437
436
  table.foreignKeys.forEach((foreignKey) => upQueries.push(this.dropForeignKeySql(table, foreignKey)));
438
437
  upQueries.push(this.dropTableSql(table));
439
438
  downQueries.push(this.createTableSql(table, createForeignKeys));
439
+ // if table had columns with generated type, we must remove the expression from the metadata table
440
+ const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
441
+ for (const column of generatedColumns) {
442
+ const tableNameWithSchema = (await this.getTableNameWithSchema(table.name)).split(".");
443
+ const tableName = tableNameWithSchema[1];
444
+ const schema = tableNameWithSchema[0];
445
+ const deleteQuery = this.deleteTypeormMetadataSql({
446
+ database: this.driver.database,
447
+ schema,
448
+ table: tableName,
449
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
450
+ name: column.name,
451
+ });
452
+ const insertQuery = this.insertTypeormMetadataSql({
453
+ database: this.driver.database,
454
+ schema,
455
+ table: tableName,
456
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
457
+ name: column.name,
458
+ value: column.asExpression,
459
+ });
460
+ upQueries.push(deleteQuery);
461
+ downQueries.push(insertQuery);
462
+ }
440
463
  await this.executeQueries(upQueries, downQueries);
441
464
  }
442
465
  /**
@@ -481,8 +504,9 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
481
504
  : newTableName;
482
505
  upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(oldTable)} RENAME TO "${newTableName}"`));
483
506
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(newTable)} RENAME TO "${oldTableName}"`));
484
- // rename column primary key constraint
485
- if (newTable.primaryColumns.length > 0) {
507
+ // rename column primary key constraint if it has default constraint name
508
+ if (newTable.primaryColumns.length > 0 &&
509
+ !newTable.primaryColumns[0].primaryKeyConstraintName) {
486
510
  const columnNames = newTable.primaryColumns.map((column) => column.name);
487
511
  const oldPkName = this.connection.namingStrategy.primaryKeyName(oldTable, columnNames);
488
512
  const newPkName = this.connection.namingStrategy.primaryKeyName(newTable, columnNames);
@@ -504,6 +528,10 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
504
528
  });
505
529
  // rename unique constraints
506
530
  newTable.uniques.forEach((unique) => {
531
+ const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(oldTable, unique.columnNames);
532
+ // Skip renaming if Unique has user defined constraint name
533
+ if (unique.name !== oldUniqueName)
534
+ return;
507
535
  // build new constraint name
508
536
  const newUniqueName = this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames);
509
537
  // build queries
@@ -514,6 +542,10 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
514
542
  });
515
543
  // rename index constraints
516
544
  newTable.indices.forEach((index) => {
545
+ const oldIndexName = this.connection.namingStrategy.indexName(oldTable, index.columnNames, index.where);
546
+ // Skip renaming if Index has user defined constraint name
547
+ if (index.name !== oldIndexName)
548
+ return;
517
549
  // build new constraint name
518
550
  const { schema } = this.driver.parseTableName(newTable);
519
551
  const newIndexName = this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);
@@ -531,6 +563,10 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
531
563
  });
532
564
  // rename foreign key constraints
533
565
  newTable.foreignKeys.forEach((foreignKey) => {
566
+ const oldForeignKeyName = this.connection.namingStrategy.foreignKeyName(oldTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
567
+ // Skip renaming if foreign key has user defined constraint name
568
+ if (foreignKey.name !== oldForeignKeyName)
569
+ return;
534
570
  // build new constraint name
535
571
  const newForeignKeyName = this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
536
572
  // build queries
@@ -575,7 +611,9 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
575
611
  const primaryColumns = clonedTable.primaryColumns;
576
612
  // if table already have primary key, me must drop it and recreate again
577
613
  if (primaryColumns.length > 0) {
578
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
614
+ const pkName = primaryColumns[0].primaryKeyConstraintName
615
+ ? primaryColumns[0].primaryKeyConstraintName
616
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
579
617
  const columnNames = primaryColumns
580
618
  .map((column) => `"${column.name}"`)
581
619
  .join(", ");
@@ -583,7 +621,9 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
583
621
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${pkName}" PRIMARY KEY (${columnNames})`));
584
622
  }
585
623
  primaryColumns.push(column);
586
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
624
+ const pkName = primaryColumns[0].primaryKeyConstraintName
625
+ ? primaryColumns[0].primaryKeyConstraintName
626
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
587
627
  const columnNames = primaryColumns
588
628
  .map((column) => `"${column.name}"`)
589
629
  .join(", ");
@@ -626,7 +666,6 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
626
666
  type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
627
667
  name: column.name,
628
668
  });
629
- upQueries.push(deleteQuery);
630
669
  upQueries.push(insertQuery);
631
670
  downQueries.push(deleteQuery);
632
671
  }
@@ -711,7 +750,8 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
711
750
  downQueries.push(new Query_1.Query(`ALTER TYPE ${this.buildEnumName(table, newColumn)} RENAME TO "${oldEnumType.name}"`));
712
751
  }
713
752
  // rename column primary key constraint
714
- if (oldColumn.isPrimary === true) {
753
+ if (oldColumn.isPrimary === true &&
754
+ !oldColumn.primaryKeyConstraintName) {
715
755
  const primaryColumns = clonedTable.primaryColumns;
716
756
  // build old primary constraint name
717
757
  const columnNames = primaryColumns.map((column) => column.name);
@@ -738,6 +778,10 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
738
778
  }
739
779
  // rename unique constraints
740
780
  clonedTable.findColumnUniques(oldColumn).forEach((unique) => {
781
+ const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(clonedTable, unique.columnNames);
782
+ // Skip renaming if Unique has user defined constraint name
783
+ if (unique.name !== oldUniqueName)
784
+ return;
741
785
  // build new constraint name
742
786
  unique.columnNames.splice(unique.columnNames.indexOf(oldColumn.name), 1);
743
787
  unique.columnNames.push(newColumn.name);
@@ -750,6 +794,10 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
750
794
  });
751
795
  // rename index constraints
752
796
  clonedTable.findColumnIndices(oldColumn).forEach((index) => {
797
+ const oldIndexName = this.connection.namingStrategy.indexName(clonedTable, index.columnNames, index.where);
798
+ // Skip renaming if Index has user defined constraint name
799
+ if (index.name !== oldIndexName)
800
+ return;
753
801
  // build new constraint name
754
802
  index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);
755
803
  index.columnNames.push(newColumn.name);
@@ -771,6 +819,10 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
771
819
  clonedTable
772
820
  .findColumnForeignKeys(oldColumn)
773
821
  .forEach((foreignKey) => {
822
+ const foreignKeyName = this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
823
+ // Skip renaming if foreign key has user defined constraint name
824
+ if (foreignKey.name !== foreignKeyName)
825
+ return;
774
826
  // build new constraint name
775
827
  foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);
776
828
  foreignKey.columnNames.push(newColumn.name);
@@ -856,7 +908,9 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
856
908
  const primaryColumns = clonedTable.primaryColumns;
857
909
  // if primary column state changed, we must always drop existed constraint.
858
910
  if (primaryColumns.length > 0) {
859
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
911
+ const pkName = primaryColumns[0].primaryKeyConstraintName
912
+ ? primaryColumns[0].primaryKeyConstraintName
913
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
860
914
  const columnNames = primaryColumns
861
915
  .map((column) => `"${column.name}"`)
862
916
  .join(", ");
@@ -868,7 +922,9 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
868
922
  // update column in table
869
923
  const column = clonedTable.columns.find((column) => column.name === newColumn.name);
870
924
  column.isPrimary = true;
871
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
925
+ const pkName = primaryColumns[0].primaryKeyConstraintName
926
+ ? primaryColumns[0].primaryKeyConstraintName
927
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
872
928
  const columnNames = primaryColumns
873
929
  .map((column) => `"${column.name}"`)
874
930
  .join(", ");
@@ -883,7 +939,10 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
883
939
  column.isPrimary = false;
884
940
  // if we have another primary keys, we must recreate constraint.
885
941
  if (primaryColumns.length > 0) {
886
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
942
+ const pkName = primaryColumns[0]
943
+ .primaryKeyConstraintName
944
+ ? primaryColumns[0].primaryKeyConstraintName
945
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
887
946
  const columnNames = primaryColumns
888
947
  .map((column) => `"${column.name}"`)
889
948
  .join(", ");
@@ -997,15 +1056,6 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
997
1056
  name: oldColumn.name,
998
1057
  }));
999
1058
  // However, we can't copy it back on downgrade. It needs to regenerate.
1000
- downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP COLUMN "${newColumn.name}"`));
1001
- downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD ${this.buildCreateColumnSql(table, oldColumn)}`));
1002
- downQueries.push(this.deleteTypeormMetadataSql({
1003
- database: this.driver.database,
1004
- schema,
1005
- table: tableName,
1006
- type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
1007
- name: newColumn.name,
1008
- }));
1009
1059
  downQueries.push(this.insertTypeormMetadataSql({
1010
1060
  database: this.driver.database,
1011
1061
  schema,
@@ -1014,6 +1064,17 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1014
1064
  name: oldColumn.name,
1015
1065
  value: oldColumn.asExpression,
1016
1066
  }));
1067
+ downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD ${this.buildCreateColumnSql(table, oldColumn)}`));
1068
+ downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP COLUMN "${newColumn.name}"`));
1069
+ // downQueries.push(
1070
+ // this.deleteTypeormMetadataSql({
1071
+ // database: this.driver.database,
1072
+ // schema,
1073
+ // table: tableName,
1074
+ // type: MetadataTableType.GENERATED_COLUMN,
1075
+ // name: newColumn.name,
1076
+ // }),
1077
+ // )
1017
1078
  }
1018
1079
  }
1019
1080
  }
@@ -1045,7 +1106,9 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1045
1106
  const downQueries = [];
1046
1107
  // drop primary key constraint
1047
1108
  if (column.isPrimary) {
1048
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
1109
+ const pkName = column.primaryKeyConstraintName
1110
+ ? column.primaryKeyConstraintName
1111
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
1049
1112
  const columnNames = clonedTable.primaryColumns
1050
1113
  .map((primaryColumn) => `"${primaryColumn.name}"`)
1051
1114
  .join(", ");
@@ -1056,7 +1119,10 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1056
1119
  tableColumn.isPrimary = false;
1057
1120
  // if primary key have multiple columns, we must recreate it without dropped column
1058
1121
  if (clonedTable.primaryColumns.length > 0) {
1059
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
1122
+ const pkName = clonedTable.primaryColumns[0]
1123
+ .primaryKeyConstraintName
1124
+ ? clonedTable.primaryColumns[0].primaryKeyConstraintName
1125
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
1060
1126
  const columnNames = clonedTable.primaryColumns
1061
1127
  .map((primaryColumn) => `"${primaryColumn.name}"`)
1062
1128
  .join(", ");
@@ -1105,14 +1171,14 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1105
1171
  const tableNameWithSchema = (await this.getTableNameWithSchema(table.name)).split(".");
1106
1172
  const tableName = tableNameWithSchema[1];
1107
1173
  const schema = tableNameWithSchema[0];
1108
- const insertQuery = this.deleteTypeormMetadataSql({
1174
+ const deleteQuery = this.deleteTypeormMetadataSql({
1109
1175
  database: this.driver.database,
1110
1176
  schema,
1111
1177
  table: tableName,
1112
1178
  type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
1113
1179
  name: column.name,
1114
1180
  });
1115
- const deleteQuery = this.insertTypeormMetadataSql({
1181
+ const insertQuery = this.insertTypeormMetadataSql({
1116
1182
  database: this.driver.database,
1117
1183
  schema,
1118
1184
  table: tableName,
@@ -1120,8 +1186,8 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1120
1186
  name: column.name,
1121
1187
  value: column.asExpression,
1122
1188
  });
1123
- upQueries.push(insertQuery);
1124
- downQueries.push(deleteQuery);
1189
+ upQueries.push(deleteQuery);
1190
+ downQueries.push(insertQuery);
1125
1191
  }
1126
1192
  await this.executeQueries(upQueries, downQueries);
1127
1193
  clonedTable.removeColumn(column);
@@ -1138,12 +1204,12 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1138
1204
  /**
1139
1205
  * Creates a new primary key.
1140
1206
  */
1141
- async createPrimaryKey(tableOrName, columnNames) {
1207
+ async createPrimaryKey(tableOrName, columnNames, constraintName) {
1142
1208
  const table = InstanceChecker_1.InstanceChecker.isTable(tableOrName)
1143
1209
  ? tableOrName
1144
1210
  : await this.getCachedTable(tableOrName);
1145
1211
  const clonedTable = table.clone();
1146
- const up = this.createPrimaryKeySql(table, columnNames);
1212
+ const up = this.createPrimaryKeySql(table, columnNames, constraintName);
1147
1213
  // mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.
1148
1214
  clonedTable.columns.forEach((column) => {
1149
1215
  if (columnNames.find((columnName) => columnName === column.name))
@@ -1167,7 +1233,9 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1167
1233
  // if table already have primary columns, we must drop them.
1168
1234
  const primaryColumns = clonedTable.primaryColumns;
1169
1235
  if (primaryColumns.length > 0) {
1170
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
1236
+ const pkName = primaryColumns[0].primaryKeyConstraintName
1237
+ ? primaryColumns[0].primaryKeyConstraintName
1238
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
1171
1239
  const columnNamesString = primaryColumns
1172
1240
  .map((column) => `"${column.name}"`)
1173
1241
  .join(", ");
@@ -1178,7 +1246,9 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1178
1246
  clonedTable.columns
1179
1247
  .filter((column) => columnNames.indexOf(column.name) !== -1)
1180
1248
  .forEach((column) => (column.isPrimary = true));
1181
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
1249
+ const pkName = primaryColumns[0].primaryKeyConstraintName
1250
+ ? primaryColumns[0].primaryKeyConstraintName
1251
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
1182
1252
  const columnNamesString = columnNames
1183
1253
  .map((columnName) => `"${columnName}"`)
1184
1254
  .join(", ");
@@ -1190,12 +1260,12 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1190
1260
  /**
1191
1261
  * Drops a primary key.
1192
1262
  */
1193
- async dropPrimaryKey(tableOrName) {
1263
+ async dropPrimaryKey(tableOrName, constraintName) {
1194
1264
  const table = InstanceChecker_1.InstanceChecker.isTable(tableOrName)
1195
1265
  ? tableOrName
1196
1266
  : await this.getCachedTable(tableOrName);
1197
1267
  const up = this.dropPrimaryKeySql(table);
1198
- const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name));
1268
+ const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name), constraintName);
1199
1269
  await this.executeQueries(up, down);
1200
1270
  table.primaryColumns.forEach((column) => {
1201
1271
  column.isPrimary = false;
@@ -1817,7 +1887,30 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1817
1887
  }
1818
1888
  tableColumn.isNullable =
1819
1889
  dbColumn["is_nullable"] === "YES";
1820
- tableColumn.isPrimary = !!columnConstraints.find((constraint) => constraint["constraint_type"] === "PRIMARY");
1890
+ const primaryConstraint = columnConstraints.find((constraint) => constraint["constraint_type"] === "PRIMARY");
1891
+ if (primaryConstraint) {
1892
+ tableColumn.isPrimary = true;
1893
+ // find another columns involved in primary key constraint
1894
+ const anotherPrimaryConstraints = dbConstraints.filter((constraint) => constraint["table_name"] ===
1895
+ dbColumn["table_name"] &&
1896
+ constraint["table_schema"] ===
1897
+ dbColumn["table_schema"] &&
1898
+ constraint["column_name"] !==
1899
+ dbColumn["column_name"] &&
1900
+ constraint["constraint_type"] ===
1901
+ "PRIMARY");
1902
+ // collect all column names
1903
+ const columnNames = anotherPrimaryConstraints.map((constraint) => constraint["column_name"]);
1904
+ columnNames.push(dbColumn["column_name"]);
1905
+ // build default primary key constraint name
1906
+ const pkName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
1907
+ // if primary key has user-defined constraint name, write it in table column
1908
+ if (primaryConstraint["constraint_name"] !==
1909
+ pkName) {
1910
+ tableColumn.primaryKeyConstraintName =
1911
+ primaryConstraint["constraint_name"];
1912
+ }
1913
+ }
1821
1914
  const uniqueConstraints = columnConstraints.filter((constraint) => constraint["constraint_type"] === "UNIQUE");
1822
1915
  const isConstraintComposite = uniqueConstraints.every((uniqueConstraint) => {
1823
1916
  return dbConstraints.some((dbConstraint) => dbConstraint["constraint_type"] ===
@@ -1870,13 +1963,14 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1870
1963
  // In postgres there is no VIRTUAL generated column type
1871
1964
  tableColumn.generatedType = "STORED";
1872
1965
  // We cannot relay on information_schema.columns.generation_expression, because it is formatted different.
1873
- const asExpressionQuery = `SELECT * FROM "${this.connection.metadataTableName}" ` +
1874
- ` WHERE "table" = '${dbTable["table_name"]}'` +
1875
- ` AND "name" = '${tableColumn.name}'` +
1876
- ` AND "schema" = '${dbTable["table_schema"]}'` +
1877
- ` AND "database" = '${this.driver.database}'` +
1878
- ` AND "type" = '${MetadataTableType_1.MetadataTableType.GENERATED_COLUMN}'`;
1879
- const results = await this.query(asExpressionQuery);
1966
+ const asExpressionQuery = await this.selectTypeormMetadataSql({
1967
+ database: currentDatabase,
1968
+ schema: dbTable["table_schema"],
1969
+ table: dbTable["table_name"],
1970
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
1971
+ name: tableColumn.name,
1972
+ });
1973
+ const results = await this.query(asExpressionQuery.query, asExpressionQuery.parameters);
1880
1974
  if (results[0] && results[0].value) {
1881
1975
  tableColumn.asExpression = results[0].value;
1882
1976
  }
@@ -2080,7 +2174,9 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
2080
2174
  }
2081
2175
  const primaryColumns = table.columns.filter((column) => column.isPrimary);
2082
2176
  if (primaryColumns.length > 0) {
2083
- const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
2177
+ const primaryKeyName = primaryColumns[0].primaryKeyConstraintName
2178
+ ? primaryColumns[0].primaryKeyConstraintName
2179
+ : this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
2084
2180
  const columnNames = primaryColumns
2085
2181
  .map((column) => `"${column.name}"`)
2086
2182
  .join(", ");
@@ -2226,8 +2322,10 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
2226
2322
  /**
2227
2323
  * Builds create primary key sql.
2228
2324
  */
2229
- createPrimaryKeySql(table, columnNames) {
2230
- const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
2325
+ createPrimaryKeySql(table, columnNames, constraintName) {
2326
+ const primaryKeyName = constraintName
2327
+ ? constraintName
2328
+ : this.connection.namingStrategy.primaryKeyName(table, columnNames);
2231
2329
  const columnNamesString = columnNames
2232
2330
  .map((columnName) => `"${columnName}"`)
2233
2331
  .join(", ");
@@ -2237,8 +2335,13 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
2237
2335
  * Builds drop primary key sql.
2238
2336
  */
2239
2337
  dropPrimaryKeySql(table) {
2338
+ if (!table.primaryColumns.length)
2339
+ throw new error_1.TypeORMError(`Table ${table} has no primary keys.`);
2240
2340
  const columnNames = table.primaryColumns.map((column) => column.name);
2241
- const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
2341
+ const constraintName = table.primaryColumns[0].primaryKeyConstraintName;
2342
+ const primaryKeyName = constraintName
2343
+ ? constraintName
2344
+ : this.connection.namingStrategy.primaryKeyName(table, columnNames);
2242
2345
  return new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${primaryKeyName}"`);
2243
2346
  }
2244
2347
  /**
@@ -2449,25 +2552,22 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
2449
2552
  else if (!column.isGenerated || column.type === "uuid") {
2450
2553
  c += " " + this.connection.driver.createFullType(column);
2451
2554
  }
2452
- // CHARACTER SET, COLLATE, NOT NULL and DEFAULT do not exist on generated (virtual) columns
2453
- // Also, postgres only supports the stored generated column type
2555
+ // Postgres only supports the stored generated column type
2454
2556
  if (column.generatedType === "STORED" && column.asExpression) {
2455
2557
  c += ` GENERATED ALWAYS AS (${column.asExpression}) STORED`;
2456
2558
  }
2457
- else {
2458
- if (column.charset)
2459
- c += ' CHARACTER SET "' + column.charset + '"';
2460
- if (column.collation)
2461
- c += ' COLLATE "' + column.collation + '"';
2462
- if (column.isNullable !== true)
2463
- c += " NOT NULL";
2464
- if (column.default !== undefined && column.default !== null)
2465
- c += " DEFAULT " + column.default;
2466
- if (column.isGenerated &&
2467
- column.generationStrategy === "uuid" &&
2468
- !column.default)
2469
- c += ` DEFAULT ${this.driver.uuidGenerator}`;
2470
- }
2559
+ if (column.charset)
2560
+ c += ' CHARACTER SET "' + column.charset + '"';
2561
+ if (column.collation)
2562
+ c += ' COLLATE "' + column.collation + '"';
2563
+ if (column.isNullable !== true)
2564
+ c += " NOT NULL";
2565
+ if (column.default !== undefined && column.default !== null)
2566
+ c += " DEFAULT " + column.default;
2567
+ if (column.isGenerated &&
2568
+ column.generationStrategy === "uuid" &&
2569
+ !column.default)
2570
+ c += ` DEFAULT ${this.driver.uuidGenerator}`;
2471
2571
  return c;
2472
2572
  }
2473
2573
  /**