typeorm 0.2.28 → 0.2.32

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 (1178) hide show
  1. package/README.md +54 -49
  2. package/browser/cache/QueryResultCache.js +1 -1
  3. package/browser/cache/QueryResultCacheOptions.js +1 -1
  4. package/browser/common/DeepPartial.js +1 -1
  5. package/browser/common/EntityFieldsNames.d.ts +6 -0
  6. package/browser/common/EntityFieldsNames.js +3 -0
  7. package/browser/common/EntityFieldsNames.js.map +1 -0
  8. package/browser/common/EntityTarget.js +1 -1
  9. package/browser/common/ObjectLiteral.js +1 -1
  10. package/browser/common/ObjectType.js +1 -1
  11. package/browser/connection/BaseConnectionOptions.js +1 -1
  12. package/browser/connection/Connection.d.ts +2 -2
  13. package/browser/connection/Connection.js +4 -2
  14. package/browser/connection/Connection.js.map +1 -1
  15. package/browser/connection/ConnectionMetadataBuilder.js +5 -5
  16. package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
  17. package/browser/connection/ConnectionOptions.js +1 -1
  18. package/browser/connection/ConnectionOptionsReader.d.ts +3 -3
  19. package/browser/connection/ConnectionOptionsReader.js +30 -30
  20. package/browser/connection/ConnectionOptionsReader.js.map +1 -1
  21. package/browser/connection/options-reader/ConnectionOptionsEnvReader.js +1 -1
  22. package/browser/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  23. package/browser/connection/options-reader/ConnectionOptionsYmlReader.js +1 -1
  24. package/browser/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
  25. package/browser/decorator/columns/PrimaryColumn.d.ts +9 -2
  26. package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
  27. package/browser/decorator/entity/ChildEntity.js +1 -1
  28. package/browser/decorator/entity/ChildEntity.js.map +1 -1
  29. package/browser/decorator/options/ColumnCommonOptions.js +1 -1
  30. package/browser/decorator/options/ColumnEmbeddedOptions.js +1 -1
  31. package/browser/decorator/options/ColumnEnumOptions.js +1 -1
  32. package/browser/decorator/options/ColumnHstoreOptions.js +1 -1
  33. package/browser/decorator/options/ColumnNumericOptions.js +1 -1
  34. package/browser/decorator/options/ColumnOptions.js +1 -1
  35. package/browser/decorator/options/ColumnWithLengthOptions.js +1 -1
  36. package/browser/decorator/options/ColumnWithWidthOptions.js +1 -1
  37. package/browser/decorator/options/EntityOptions.js +1 -1
  38. package/browser/decorator/options/IndexOptions.js +1 -1
  39. package/browser/decorator/options/JoinColumnOptions.js +1 -1
  40. package/browser/decorator/options/JoinTableMultipleColumnsOptions.js +1 -1
  41. package/browser/decorator/options/JoinTableOptions.js +1 -1
  42. package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.js +1 -1
  43. package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.js +1 -1
  44. package/browser/decorator/options/RelationOptions.d.ts +10 -0
  45. package/browser/decorator/options/RelationOptions.js +1 -1
  46. package/browser/decorator/options/RelationOptions.js.map +1 -1
  47. package/browser/decorator/options/SpatialColumnOptions.js +1 -1
  48. package/browser/decorator/options/TransactionOptions.js +1 -1
  49. package/browser/decorator/options/ValueTransformer.js +1 -1
  50. package/browser/decorator/options/ViewColumnOptions.js +1 -1
  51. package/browser/decorator/options/ViewEntityOptions.js +1 -1
  52. package/browser/decorator/relations/ManyToOne.d.ts +6 -6
  53. package/browser/decorator/relations/ManyToOne.js +5 -5
  54. package/browser/decorator/relations/ManyToOne.js.map +1 -1
  55. package/browser/decorator/relations/OneToMany.d.ts +3 -2
  56. package/browser/decorator/relations/OneToMany.js +4 -3
  57. package/browser/decorator/relations/OneToMany.js.map +1 -1
  58. package/browser/decorator/transaction/Transaction.d.ts +1 -1
  59. package/browser/decorator/transaction/Transaction.js +6 -6
  60. package/browser/decorator/transaction/Transaction.js.map +1 -1
  61. package/browser/decorator/tree/Tree.d.ts +2 -1
  62. package/browser/decorator/tree/Tree.js +3 -2
  63. package/browser/decorator/tree/Tree.js.map +1 -1
  64. package/browser/driver/Driver.d.ts +1 -1
  65. package/browser/driver/Driver.js +1 -1
  66. package/browser/driver/Driver.js.map +1 -1
  67. package/browser/driver/DriverFactory.js.map +1 -1
  68. package/browser/driver/DriverUtils.d.ts +10 -0
  69. package/browser/driver/DriverUtils.js +99 -12
  70. package/browser/driver/DriverUtils.js.map +1 -1
  71. package/browser/driver/aurora-data-api/AuroraDataApiConnectionCredentialsOptions.js +1 -1
  72. package/browser/driver/aurora-data-api/AuroraDataApiConnectionOptions.d.ts +1 -0
  73. package/browser/driver/aurora-data-api/AuroraDataApiConnectionOptions.js +1 -1
  74. package/browser/driver/aurora-data-api/AuroraDataApiConnectionOptions.js.map +1 -1
  75. package/browser/driver/aurora-data-api/AuroraDataApiDriver.d.ts +3 -3
  76. package/browser/driver/aurora-data-api/AuroraDataApiDriver.js +15 -6
  77. package/browser/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
  78. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.d.ts +6 -1
  79. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js +72 -11
  80. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  81. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.d.ts +2 -0
  82. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.js +1 -1
  83. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.js.map +1 -1
  84. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.d.ts +10 -1
  85. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js +26 -2
  86. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js.map +1 -1
  87. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.d.ts +2 -1
  88. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +59 -11
  89. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
  90. package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js +1 -1
  91. package/browser/driver/cockroachdb/CockroachConnectionCredentialsOptions.js +1 -1
  92. package/browser/driver/cockroachdb/CockroachConnectionOptions.js +1 -1
  93. package/browser/driver/cockroachdb/CockroachDriver.d.ts +1 -1
  94. package/browser/driver/cockroachdb/CockroachDriver.js +6 -9
  95. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  96. package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +4 -0
  97. package/browser/driver/cockroachdb/CockroachQueryRunner.js +112 -42
  98. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  99. package/browser/driver/cordova/CordovaConnectionOptions.js +1 -1
  100. package/browser/driver/expo/ExpoConnectionOptions.js +1 -1
  101. package/browser/driver/expo/ExpoQueryRunner.js +72 -14
  102. package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
  103. package/browser/driver/mongodb/MongoConnectionOptions.d.ts +8 -0
  104. package/browser/driver/mongodb/MongoConnectionOptions.js +1 -1
  105. package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  106. package/browser/driver/mongodb/MongoDriver.d.ts +8 -4
  107. package/browser/driver/mongodb/MongoDriver.js +26 -14
  108. package/browser/driver/mongodb/MongoDriver.js.map +1 -1
  109. package/browser/driver/mongodb/MongoQueryRunner.d.ts +3 -3
  110. package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
  111. package/browser/driver/mysql/MysqlConnectionCredentialsOptions.d.ts +4 -0
  112. package/browser/driver/mysql/MysqlConnectionCredentialsOptions.js +1 -1
  113. package/browser/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
  114. package/browser/driver/mysql/MysqlConnectionOptions.js +1 -1
  115. package/browser/driver/mysql/MysqlDriver.d.ts +2 -2
  116. package/browser/driver/mysql/MysqlDriver.js +15 -14
  117. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  118. package/browser/driver/mysql/MysqlQueryRunner.d.ts +4 -0
  119. package/browser/driver/mysql/MysqlQueryRunner.js +118 -43
  120. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  121. package/browser/driver/nativescript/NativescriptConnectionOptions.js +1 -1
  122. package/browser/driver/oracle/OracleConnectionCredentialsOptions.js +1 -1
  123. package/browser/driver/oracle/OracleConnectionOptions.d.ts +4 -0
  124. package/browser/driver/oracle/OracleConnectionOptions.js +1 -1
  125. package/browser/driver/oracle/OracleConnectionOptions.js.map +1 -1
  126. package/browser/driver/oracle/OracleDriver.d.ts +1 -1
  127. package/browser/driver/oracle/OracleDriver.js +28 -3
  128. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  129. package/browser/driver/oracle/OracleQueryRunner.js +53 -7
  130. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  131. package/browser/driver/postgres/PostgresConnectionCredentialsOptions.js +1 -1
  132. package/browser/driver/postgres/PostgresConnectionOptions.d.ts +4 -0
  133. package/browser/driver/postgres/PostgresConnectionOptions.js +1 -1
  134. package/browser/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  135. package/browser/driver/postgres/PostgresDriver.d.ts +2 -2
  136. package/browser/driver/postgres/PostgresDriver.js +63 -29
  137. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  138. package/browser/driver/postgres/PostgresQueryRunner.d.ts +9 -1
  139. package/browser/driver/postgres/PostgresQueryRunner.js +335 -211
  140. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  141. package/browser/driver/react-native/ReactNativeConnectionOptions.js +1 -1
  142. package/browser/driver/react-native/ReactNativeDriver.js +1 -2
  143. package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
  144. package/browser/driver/sap/SapConnectionCredentialsOptions.js +1 -1
  145. package/browser/driver/sap/SapConnectionOptions.js +1 -1
  146. package/browser/driver/sap/SapDriver.d.ts +1 -1
  147. package/browser/driver/sap/SapDriver.js.map +1 -1
  148. package/browser/driver/sap/SapQueryRunner.js +58 -10
  149. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  150. package/browser/driver/sqlite/SqliteConnectionOptions.js +1 -1
  151. package/browser/driver/sqlite/SqliteQueryRunner.js +4 -0
  152. package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  153. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +1 -1
  154. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +4 -1
  155. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  156. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +55 -8
  157. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  158. package/browser/driver/sqljs/SqljsConnectionOptions.js +1 -1
  159. package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts +18 -2
  160. package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.js +1 -1
  161. package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
  162. package/browser/driver/sqlserver/SqlServerConnectionOptions.js +1 -1
  163. package/browser/driver/sqlserver/SqlServerDriver.d.ts +2 -2
  164. package/browser/driver/sqlserver/SqlServerDriver.js +33 -8
  165. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  166. package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +1 -0
  167. package/browser/driver/sqlserver/SqlServerQueryRunner.js +166 -86
  168. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  169. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.d.ts +10 -0
  170. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js +3 -0
  171. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -0
  172. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.d.ts +20 -0
  173. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js +3 -0
  174. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -0
  175. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.d.ts +16 -0
  176. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js +3 -0
  177. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -0
  178. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.d.ts +17 -0
  179. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js +3 -0
  180. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -0
  181. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.d.ts +17 -0
  182. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js +3 -0
  183. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js.map +1 -0
  184. package/browser/driver/sqlserver/authentication/DefaultAuthentication.d.ts +13 -0
  185. package/browser/driver/sqlserver/authentication/DefaultAuthentication.js +3 -0
  186. package/browser/driver/sqlserver/authentication/DefaultAuthentication.js.map +1 -0
  187. package/browser/driver/sqlserver/authentication/NtlmAuthentication.d.ts +19 -0
  188. package/browser/driver/sqlserver/authentication/NtlmAuthentication.js +3 -0
  189. package/browser/driver/sqlserver/authentication/NtlmAuthentication.js.map +1 -0
  190. package/browser/driver/types/ColumnTypes.d.ts +1 -1
  191. package/browser/driver/types/ColumnTypes.js +1 -1
  192. package/browser/driver/types/ColumnTypes.js.map +1 -1
  193. package/browser/driver/types/DataTypeDefaults.js +1 -1
  194. package/browser/driver/types/DatabaseType.js +1 -1
  195. package/browser/driver/types/IsolationLevel.js +1 -1
  196. package/browser/driver/types/MappedColumnTypes.js +1 -1
  197. package/browser/driver/types/ReplicationMode.js +1 -1
  198. package/browser/entity-manager/EntityManager.d.ts +16 -2
  199. package/browser/entity-manager/EntityManager.js +5 -16
  200. package/browser/entity-manager/EntityManager.js.map +1 -1
  201. package/browser/entity-manager/MongoEntityManager.d.ts +1 -4
  202. package/browser/entity-manager/MongoEntityManager.js +53 -48
  203. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  204. package/browser/entity-schema/EntitySchemaCheckOptions.js +1 -1
  205. package/browser/entity-schema/EntitySchemaColumnOptions.js +1 -1
  206. package/browser/entity-schema/EntitySchemaExclusionOptions.js +1 -1
  207. package/browser/entity-schema/EntitySchemaIndexOptions.js +1 -1
  208. package/browser/entity-schema/EntitySchemaRelationOptions.js +1 -1
  209. package/browser/entity-schema/EntitySchemaUniqueOptions.js +1 -1
  210. package/browser/error/index.d.ts +61 -0
  211. package/browser/error/index.js +63 -0
  212. package/browser/error/index.js.map +1 -0
  213. package/browser/find-options/FindConditions.js +1 -1
  214. package/browser/find-options/FindManyOptions.js +1 -1
  215. package/browser/find-options/FindOneOptions.d.ts +10 -2
  216. package/browser/find-options/FindOneOptions.js +1 -1
  217. package/browser/find-options/FindOneOptions.js.map +1 -1
  218. package/browser/find-options/FindOperator.d.ts +25 -6
  219. package/browser/find-options/FindOperator.js +32 -6
  220. package/browser/find-options/FindOperator.js.map +1 -1
  221. package/browser/find-options/FindOperatorType.d.ts +1 -1
  222. package/browser/find-options/FindOperatorType.js +1 -1
  223. package/browser/find-options/FindOperatorType.js.map +1 -1
  224. package/browser/find-options/FindOptionsUtils.js +15 -2
  225. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  226. package/browser/find-options/JoinOptions.d.ts +16 -4
  227. package/browser/find-options/JoinOptions.js +1 -1
  228. package/browser/find-options/JoinOptions.js.map +1 -1
  229. package/browser/find-options/OrderByCondition.js +1 -1
  230. package/browser/find-options/operator/ILike.d.ts +6 -0
  231. package/browser/find-options/operator/ILike.js +10 -0
  232. package/browser/find-options/operator/ILike.js.map +1 -0
  233. package/browser/find-options/operator/Raw.d.ts +14 -2
  234. package/browser/find-options/operator/Raw.js +5 -6
  235. package/browser/find-options/operator/Raw.js.map +1 -1
  236. package/browser/index.d.ts +3 -1
  237. package/browser/index.js +25 -1
  238. package/browser/index.js.map +1 -1
  239. package/browser/logger/AdvancedConsoleLogger.d.ts +2 -1
  240. package/browser/logger/FileLogger.d.ts +2 -2
  241. package/browser/logger/Logger.d.ts +1 -1
  242. package/browser/logger/Logger.js +1 -1
  243. package/browser/logger/Logger.js.map +1 -1
  244. package/browser/logger/LoggerOptions.js +1 -1
  245. package/browser/logger/SimpleConsoleLogger.d.ts +2 -1
  246. package/browser/metadata/ColumnMetadata.d.ts +1 -1
  247. package/browser/metadata/ColumnMetadata.js +23 -15
  248. package/browser/metadata/ColumnMetadata.js.map +1 -1
  249. package/browser/metadata/EmbeddedMetadata.js +2 -2
  250. package/browser/metadata/EmbeddedMetadata.js.map +1 -1
  251. package/browser/metadata/EntityMetadata.d.ts +5 -0
  252. package/browser/metadata/EntityMetadata.js +3 -2
  253. package/browser/metadata/EntityMetadata.js.map +1 -1
  254. package/browser/metadata/RelationMetadata.d.ts +15 -0
  255. package/browser/metadata/RelationMetadata.js +23 -7
  256. package/browser/metadata/RelationMetadata.js.map +1 -1
  257. package/browser/metadata/types/ClosureTreeOptions.d.ts +10 -0
  258. package/browser/metadata/types/ClosureTreeOptions.js +3 -0
  259. package/browser/metadata/types/ClosureTreeOptions.js.map +1 -0
  260. package/browser/metadata/types/DeferrableType.js +1 -1
  261. package/browser/metadata/types/EventListenerTypes.d.ts +7 -7
  262. package/browser/metadata/types/EventListenerTypes.js.map +1 -1
  263. package/browser/metadata/types/OnDeleteType.js +1 -1
  264. package/browser/metadata/types/OnUpdateType.js +1 -1
  265. package/browser/metadata/types/PropertyTypeInFunction.js +1 -1
  266. package/browser/metadata/types/RelationTypeInFunction.js +1 -1
  267. package/browser/metadata/types/RelationTypes.js +1 -1
  268. package/browser/metadata/types/TableTypes.js +1 -1
  269. package/browser/metadata/types/TreeTypes.js +1 -1
  270. package/browser/metadata-args/CheckMetadataArgs.js +1 -1
  271. package/browser/metadata-args/ColumnMetadataArgs.js +1 -1
  272. package/browser/metadata-args/DiscriminatorValueMetadataArgs.js +1 -1
  273. package/browser/metadata-args/EmbeddedMetadataArgs.js +1 -1
  274. package/browser/metadata-args/EntityListenerMetadataArgs.js +1 -1
  275. package/browser/metadata-args/EntityRepositoryMetadataArgs.js +1 -1
  276. package/browser/metadata-args/EntitySubscriberMetadataArgs.js +1 -1
  277. package/browser/metadata-args/ExclusionMetadataArgs.js +1 -1
  278. package/browser/metadata-args/GeneratedMetadataArgs.js +1 -1
  279. package/browser/metadata-args/IndexMetadataArgs.js +1 -1
  280. package/browser/metadata-args/InheritanceMetadataArgs.js +1 -1
  281. package/browser/metadata-args/JoinColumnMetadataArgs.js +1 -1
  282. package/browser/metadata-args/JoinTableMetadataArgs.js +1 -1
  283. package/browser/metadata-args/NamingStrategyMetadataArgs.js +1 -1
  284. package/browser/metadata-args/RelationCountMetadataArgs.js +1 -1
  285. package/browser/metadata-args/RelationIdMetadataArgs.js +1 -1
  286. package/browser/metadata-args/RelationMetadataArgs.js +1 -1
  287. package/browser/metadata-args/TableMetadataArgs.js +1 -1
  288. package/browser/metadata-args/TransactionEntityMetadataArgs.js +1 -1
  289. package/browser/metadata-args/TransactionRepositoryMetadataArgs.js +1 -1
  290. package/browser/metadata-args/TreeMetadataArgs.d.ts +5 -0
  291. package/browser/metadata-args/TreeMetadataArgs.js +1 -1
  292. package/browser/metadata-args/TreeMetadataArgs.js.map +1 -1
  293. package/browser/metadata-args/UniqueMetadataArgs.js +1 -1
  294. package/browser/metadata-args/types/ColumnMode.js +1 -1
  295. package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +5 -3
  296. package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  297. package/browser/metadata-builder/EntityMetadataBuilder.js +26 -16
  298. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  299. package/browser/metadata-builder/EntityMetadataValidator.js +10 -5
  300. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  301. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +8 -4
  302. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  303. package/browser/metadata-builder/RelationJoinColumnBuilder.d.ts +1 -0
  304. package/browser/metadata-builder/RelationJoinColumnBuilder.js +8 -6
  305. package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  306. package/browser/migration/MigrationExecutor.js +5 -5
  307. package/browser/migration/MigrationInterface.js +1 -1
  308. package/browser/naming-strategy/DefaultNamingStrategy.d.ts +1 -1
  309. package/browser/naming-strategy/DefaultNamingStrategy.js +9 -8
  310. package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  311. package/browser/naming-strategy/NamingStrategyInterface.d.ts +6 -1
  312. package/browser/naming-strategy/NamingStrategyInterface.js +1 -1
  313. package/browser/naming-strategy/NamingStrategyInterface.js.map +1 -1
  314. package/browser/persistence/EntityPersistExecutor.js +55 -52
  315. package/browser/persistence/EntityPersistExecutor.js.map +1 -1
  316. package/browser/persistence/Subject.d.ts +4 -4
  317. package/browser/persistence/Subject.js +8 -7
  318. package/browser/persistence/Subject.js.map +1 -1
  319. package/browser/persistence/SubjectChangeMap.js +1 -1
  320. package/browser/persistence/SubjectChangedColumnsComputer.js +3 -1
  321. package/browser/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  322. package/browser/persistence/SubjectDatabaseEntityLoader.js +2 -2
  323. package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  324. package/browser/persistence/SubjectExecutor.js +30 -26
  325. package/browser/persistence/SubjectExecutor.js.map +1 -1
  326. package/browser/persistence/SubjectTopoligicalSorter.js +6 -6
  327. package/browser/persistence/SubjectTopoligicalSorter.js.map +1 -1
  328. package/browser/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  329. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js +2 -0
  330. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  331. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js +9 -4
  332. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  333. package/browser/persistence/tree/ClosureSubjectExecutor.d.ts +1 -1
  334. package/browser/persistence/tree/ClosureSubjectExecutor.js +7 -7
  335. package/browser/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  336. package/browser/query-builder/Alias.d.ts +4 -3
  337. package/browser/query-builder/Alias.js +3 -3
  338. package/browser/query-builder/DeleteQueryBuilder.js +7 -2
  339. package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
  340. package/browser/query-builder/InsertQueryBuilder.d.ts +6 -0
  341. package/browser/query-builder/InsertQueryBuilder.js +63 -14
  342. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  343. package/browser/query-builder/JoinAttribute.d.ts +10 -10
  344. package/browser/query-builder/JoinAttribute.js +10 -10
  345. package/browser/query-builder/JoinOptions.js +1 -1
  346. package/browser/query-builder/QueryBuilder.d.ts +8 -1
  347. package/browser/query-builder/QueryBuilder.js +172 -37
  348. package/browser/query-builder/QueryBuilder.js.map +1 -1
  349. package/browser/query-builder/QueryBuilderUtils.js.map +1 -1
  350. package/browser/query-builder/QueryExpressionMap.d.ts +10 -2
  351. package/browser/query-builder/QueryExpressionMap.js +4 -2
  352. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  353. package/browser/query-builder/QueryPartialEntity.js +1 -1
  354. package/browser/query-builder/RelationLoader.js +4 -4
  355. package/browser/query-builder/RelationLoader.js.map +1 -1
  356. package/browser/query-builder/RelationQueryBuilder.js +1 -1
  357. package/browser/query-builder/RelationQueryBuilder.js.map +1 -1
  358. package/browser/query-builder/RelationRemover.js +11 -11
  359. package/browser/query-builder/RelationRemover.js.map +1 -1
  360. package/browser/query-builder/SelectQuery.js +1 -1
  361. package/browser/query-builder/SelectQueryBuilder.d.ts +7 -6
  362. package/browser/query-builder/SelectQueryBuilder.js +129 -67
  363. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  364. package/browser/query-builder/SelectQueryBuilderOption.js +1 -1
  365. package/browser/query-builder/UpdateQueryBuilder.js +6 -1
  366. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  367. package/browser/query-builder/WhereExpression.js +1 -1
  368. package/browser/query-builder/relation-count/RelationCountAttribute.d.ts +7 -7
  369. package/browser/query-builder/relation-count/RelationCountAttribute.js +7 -7
  370. package/browser/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  371. package/browser/query-builder/relation-count/RelationCountLoadResult.js +1 -1
  372. package/browser/query-builder/relation-count/RelationCountLoader.js +2 -1
  373. package/browser/query-builder/relation-count/RelationCountLoader.js.map +1 -1
  374. package/browser/query-builder/relation-id/RelationIdAttribute.d.ts +8 -8
  375. package/browser/query-builder/relation-id/RelationIdAttribute.js +8 -8
  376. package/browser/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  377. package/browser/query-builder/relation-id/RelationIdLoadResult.js +1 -1
  378. package/browser/query-builder/relation-id/RelationIdLoader.js +62 -12
  379. package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  380. package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +3 -3
  381. package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  382. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +10 -7
  383. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  384. package/browser/query-runner/BaseQueryRunner.js +3 -3
  385. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  386. package/browser/query-runner/QueryRunner.d.ts +1 -1
  387. package/browser/query-runner/QueryRunner.js +1 -1
  388. package/browser/query-runner/QueryRunner.js.map +1 -1
  389. package/browser/repository/AbstractRepository.d.ts +2 -2
  390. package/browser/repository/AbstractRepository.js +2 -2
  391. package/browser/repository/BaseEntity.d.ts +1 -1
  392. package/browser/repository/BaseEntity.js +3 -3
  393. package/browser/repository/BaseEntity.js.map +1 -1
  394. package/browser/repository/EntityId.js +1 -1
  395. package/browser/repository/RemoveOptions.js +1 -1
  396. package/browser/repository/Repository.d.ts +4 -4
  397. package/browser/repository/Repository.js +3 -3
  398. package/browser/repository/Repository.js.map +1 -1
  399. package/browser/repository/SaveOptions.js +1 -1
  400. package/browser/repository/TreeRepository.js +3 -3
  401. package/browser/repository/TreeRepository.js.map +1 -1
  402. package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +2 -2
  403. package/browser/schema-builder/RdbmsSchemaBuilder.js +80 -79
  404. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  405. package/browser/schema-builder/SchemaBuilder.js +1 -1
  406. package/browser/schema-builder/options/TableCheckOptions.js +1 -1
  407. package/browser/schema-builder/options/TableColumnOptions.js +1 -1
  408. package/browser/schema-builder/options/TableExclusionOptions.js +1 -1
  409. package/browser/schema-builder/options/TableForeignKeyOptions.js +1 -1
  410. package/browser/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
  411. package/browser/schema-builder/options/TableIndexOptions.js +1 -1
  412. package/browser/schema-builder/options/TableOptions.js +1 -1
  413. package/browser/schema-builder/options/TableUniqueOptions.js +1 -1
  414. package/browser/schema-builder/options/ViewOptions.js +1 -1
  415. package/browser/schema-builder/table/Table.d.ts +1 -1
  416. package/browser/schema-builder/table/Table.js +1 -1
  417. package/browser/schema-builder/table/TableCheck.js +2 -2
  418. package/browser/schema-builder/table/TableCheck.js.map +1 -1
  419. package/browser/schema-builder/table/TableForeignKey.js +3 -3
  420. package/browser/schema-builder/table/TableForeignKey.js.map +1 -1
  421. package/browser/schema-builder/table/TableIndex.js +2 -2
  422. package/browser/schema-builder/table/TableIndex.js.map +1 -1
  423. package/browser/schema-builder/table/TableUnique.js +2 -2
  424. package/browser/schema-builder/table/TableUnique.js.map +1 -1
  425. package/browser/subscriber/Broadcaster.d.ts +24 -0
  426. package/browser/subscriber/Broadcaster.js +120 -0
  427. package/browser/subscriber/Broadcaster.js.map +1 -1
  428. package/browser/subscriber/EntitySubscriberInterface.d.ts +27 -0
  429. package/browser/subscriber/EntitySubscriberInterface.js +1 -1
  430. package/browser/subscriber/EntitySubscriberInterface.js.map +1 -1
  431. package/browser/subscriber/event/InsertEvent.js +1 -1
  432. package/browser/subscriber/event/LoadEvent.js +1 -1
  433. package/browser/subscriber/event/RemoveEvent.js +1 -1
  434. package/browser/subscriber/event/TransactionCommitEvent.d.ts +22 -0
  435. package/browser/subscriber/event/TransactionCommitEvent.js +3 -0
  436. package/browser/subscriber/event/TransactionCommitEvent.js.map +1 -0
  437. package/browser/subscriber/event/TransactionRollbackEvent.d.ts +22 -0
  438. package/browser/subscriber/event/TransactionRollbackEvent.js +3 -0
  439. package/browser/subscriber/event/TransactionRollbackEvent.js.map +1 -0
  440. package/browser/subscriber/event/TransactionStartEvent.d.ts +22 -0
  441. package/browser/subscriber/event/TransactionStartEvent.js +3 -0
  442. package/browser/subscriber/event/TransactionStartEvent.js.map +1 -0
  443. package/browser/subscriber/event/UpdateEvent.js +1 -1
  444. package/browser/util/DateUtils.d.ts +1 -1
  445. package/browser/util/DateUtils.js +1 -7
  446. package/browser/util/DateUtils.js.map +1 -1
  447. package/browser/util/OrmUtils.d.ts +1 -1
  448. package/browser/util/OrmUtils.js +2 -2
  449. package/browser/util/OrmUtils.js.map +1 -1
  450. package/browser/util/StringUtils.js.map +1 -1
  451. package/cache/DbQueryResultCache.js +1 -0
  452. package/cache/DbQueryResultCache.js.map +1 -1
  453. package/cache/QueryResultCacheFactory.js +1 -0
  454. package/cache/QueryResultCacheFactory.js.map +1 -1
  455. package/cache/RedisQueryResultCache.js +1 -0
  456. package/cache/RedisQueryResultCache.js.map +1 -1
  457. package/cli.js +2 -2
  458. package/cli.js.map +1 -1
  459. package/commands/CacheClearCommand.js +1 -0
  460. package/commands/CacheClearCommand.js.map +1 -1
  461. package/commands/CommandUtils.js +1 -0
  462. package/commands/CommandUtils.js.map +1 -1
  463. package/commands/EntityCreateCommand.js +6 -2
  464. package/commands/EntityCreateCommand.js.map +1 -1
  465. package/commands/InitCommand.d.ts +3 -0
  466. package/commands/InitCommand.js +37 -6
  467. package/commands/InitCommand.js.map +1 -1
  468. package/commands/MigrationCreateCommand.d.ts +6 -0
  469. package/commands/MigrationCreateCommand.js +23 -4
  470. package/commands/MigrationCreateCommand.js.map +1 -1
  471. package/commands/MigrationGenerateCommand.d.ts +10 -0
  472. package/commands/MigrationGenerateCommand.js +72 -34
  473. package/commands/MigrationGenerateCommand.js.map +1 -1
  474. package/commands/MigrationRevertCommand.js +1 -0
  475. package/commands/MigrationRevertCommand.js.map +1 -1
  476. package/commands/MigrationRunCommand.js +1 -0
  477. package/commands/MigrationRunCommand.js.map +1 -1
  478. package/commands/MigrationShowCommand.js +1 -0
  479. package/commands/MigrationShowCommand.js.map +1 -1
  480. package/commands/QueryCommand.d.ts +2 -0
  481. package/commands/QueryCommand.js +17 -6
  482. package/commands/QueryCommand.js.map +1 -1
  483. package/commands/SchemaDropCommand.js +1 -0
  484. package/commands/SchemaDropCommand.js.map +1 -1
  485. package/commands/SchemaLogCommand.js +1 -0
  486. package/commands/SchemaLogCommand.js.map +1 -1
  487. package/commands/SchemaSyncCommand.js +1 -0
  488. package/commands/SchemaSyncCommand.js.map +1 -1
  489. package/commands/SubscriberCreateCommand.js +6 -2
  490. package/commands/SubscriberCreateCommand.js.map +1 -1
  491. package/commands/VersionCommand.js +1 -0
  492. package/commands/VersionCommand.js.map +1 -1
  493. package/common/EntityFieldsNames.d.ts +6 -0
  494. package/common/EntityFieldsNames.js +4 -0
  495. package/common/EntityFieldsNames.js.map +1 -0
  496. package/connection/Connection.d.ts +2 -2
  497. package/connection/Connection.js +5 -2
  498. package/connection/Connection.js.map +1 -1
  499. package/connection/ConnectionManager.js +1 -0
  500. package/connection/ConnectionManager.js.map +1 -1
  501. package/connection/ConnectionMetadataBuilder.js +5 -4
  502. package/connection/ConnectionMetadataBuilder.js.map +1 -1
  503. package/connection/ConnectionOptionsReader.d.ts +3 -3
  504. package/connection/ConnectionOptionsReader.js +31 -30
  505. package/connection/ConnectionOptionsReader.js.map +1 -1
  506. package/connection/options-reader/ConnectionOptionsEnvReader.js +2 -1
  507. package/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  508. package/connection/options-reader/ConnectionOptionsXmlReader.js +1 -0
  509. package/connection/options-reader/ConnectionOptionsXmlReader.js.map +1 -1
  510. package/connection/options-reader/ConnectionOptionsYmlReader.js +2 -1
  511. package/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
  512. package/container.js +1 -0
  513. package/container.js.map +1 -1
  514. package/decorator/Check.js +1 -0
  515. package/decorator/Check.js.map +1 -1
  516. package/decorator/EntityRepository.js +1 -0
  517. package/decorator/EntityRepository.js.map +1 -1
  518. package/decorator/Exclusion.js +1 -0
  519. package/decorator/Exclusion.js.map +1 -1
  520. package/decorator/Generated.js +1 -0
  521. package/decorator/Generated.js.map +1 -1
  522. package/decorator/Index.js +1 -0
  523. package/decorator/Index.js.map +1 -1
  524. package/decorator/Unique.js +1 -0
  525. package/decorator/Unique.js.map +1 -1
  526. package/decorator/columns/Column.js +1 -0
  527. package/decorator/columns/Column.js.map +1 -1
  528. package/decorator/columns/CreateDateColumn.js +1 -0
  529. package/decorator/columns/CreateDateColumn.js.map +1 -1
  530. package/decorator/columns/DeleteDateColumn.js +1 -0
  531. package/decorator/columns/DeleteDateColumn.js.map +1 -1
  532. package/decorator/columns/ObjectIdColumn.js +1 -0
  533. package/decorator/columns/ObjectIdColumn.js.map +1 -1
  534. package/decorator/columns/PrimaryColumn.d.ts +9 -2
  535. package/decorator/columns/PrimaryColumn.js +1 -0
  536. package/decorator/columns/PrimaryColumn.js.map +1 -1
  537. package/decorator/columns/PrimaryGeneratedColumn.js +1 -0
  538. package/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  539. package/decorator/columns/UpdateDateColumn.js +1 -0
  540. package/decorator/columns/UpdateDateColumn.js.map +1 -1
  541. package/decorator/columns/VersionColumn.js +1 -0
  542. package/decorator/columns/VersionColumn.js.map +1 -1
  543. package/decorator/columns/ViewColumn.js +1 -0
  544. package/decorator/columns/ViewColumn.js.map +1 -1
  545. package/decorator/entity/ChildEntity.js +2 -1
  546. package/decorator/entity/ChildEntity.js.map +1 -1
  547. package/decorator/entity/Entity.js +1 -0
  548. package/decorator/entity/Entity.js.map +1 -1
  549. package/decorator/entity/TableInheritance.js +1 -0
  550. package/decorator/entity/TableInheritance.js.map +1 -1
  551. package/decorator/entity-view/ViewEntity.js +1 -0
  552. package/decorator/entity-view/ViewEntity.js.map +1 -1
  553. package/decorator/listeners/AfterInsert.js +1 -0
  554. package/decorator/listeners/AfterInsert.js.map +1 -1
  555. package/decorator/listeners/AfterLoad.js +1 -0
  556. package/decorator/listeners/AfterLoad.js.map +1 -1
  557. package/decorator/listeners/AfterRemove.js +1 -0
  558. package/decorator/listeners/AfterRemove.js.map +1 -1
  559. package/decorator/listeners/AfterUpdate.js +1 -0
  560. package/decorator/listeners/AfterUpdate.js.map +1 -1
  561. package/decorator/listeners/BeforeInsert.js +1 -0
  562. package/decorator/listeners/BeforeInsert.js.map +1 -1
  563. package/decorator/listeners/BeforeRemove.js +1 -0
  564. package/decorator/listeners/BeforeRemove.js.map +1 -1
  565. package/decorator/listeners/BeforeUpdate.js +1 -0
  566. package/decorator/listeners/BeforeUpdate.js.map +1 -1
  567. package/decorator/listeners/EventSubscriber.js +1 -0
  568. package/decorator/listeners/EventSubscriber.js.map +1 -1
  569. package/decorator/options/RelationOptions.d.ts +10 -0
  570. package/decorator/options/RelationOptions.js.map +1 -1
  571. package/decorator/relations/JoinColumn.js +1 -0
  572. package/decorator/relations/JoinColumn.js.map +1 -1
  573. package/decorator/relations/JoinTable.js +1 -0
  574. package/decorator/relations/JoinTable.js.map +1 -1
  575. package/decorator/relations/ManyToMany.js +1 -0
  576. package/decorator/relations/ManyToMany.js.map +1 -1
  577. package/decorator/relations/ManyToOne.d.ts +6 -6
  578. package/decorator/relations/ManyToOne.js +6 -5
  579. package/decorator/relations/ManyToOne.js.map +1 -1
  580. package/decorator/relations/OneToMany.d.ts +3 -2
  581. package/decorator/relations/OneToMany.js +5 -3
  582. package/decorator/relations/OneToMany.js.map +1 -1
  583. package/decorator/relations/OneToOne.js +1 -0
  584. package/decorator/relations/OneToOne.js.map +1 -1
  585. package/decorator/relations/RelationCount.js +1 -0
  586. package/decorator/relations/RelationCount.js.map +1 -1
  587. package/decorator/relations/RelationId.js +1 -0
  588. package/decorator/relations/RelationId.js.map +1 -1
  589. package/decorator/transaction/Transaction.d.ts +1 -1
  590. package/decorator/transaction/Transaction.js +6 -5
  591. package/decorator/transaction/Transaction.js.map +1 -1
  592. package/decorator/transaction/TransactionManager.js +1 -0
  593. package/decorator/transaction/TransactionManager.js.map +1 -1
  594. package/decorator/transaction/TransactionRepository.js +1 -0
  595. package/decorator/transaction/TransactionRepository.js.map +1 -1
  596. package/decorator/tree/Tree.d.ts +2 -1
  597. package/decorator/tree/Tree.js +4 -2
  598. package/decorator/tree/Tree.js.map +1 -1
  599. package/decorator/tree/TreeChildren.js +1 -0
  600. package/decorator/tree/TreeChildren.js.map +1 -1
  601. package/decorator/tree/TreeLevelColumn.js +1 -0
  602. package/decorator/tree/TreeLevelColumn.js.map +1 -1
  603. package/decorator/tree/TreeParent.js +1 -0
  604. package/decorator/tree/TreeParent.js.map +1 -1
  605. package/driver/Driver.d.ts +1 -1
  606. package/driver/Driver.js.map +1 -1
  607. package/driver/DriverFactory.js +1 -0
  608. package/driver/DriverFactory.js.map +1 -1
  609. package/driver/DriverUtils.d.ts +10 -0
  610. package/driver/DriverUtils.js +99 -11
  611. package/driver/DriverUtils.js.map +1 -1
  612. package/driver/Query.js +1 -0
  613. package/driver/Query.js.map +1 -1
  614. package/driver/SqlInMemory.js +1 -0
  615. package/driver/SqlInMemory.js.map +1 -1
  616. package/driver/aurora-data-api/AuroraDataApiConnection.js +1 -0
  617. package/driver/aurora-data-api/AuroraDataApiConnection.js.map +1 -1
  618. package/driver/aurora-data-api/AuroraDataApiConnectionOptions.d.ts +1 -0
  619. package/driver/aurora-data-api/AuroraDataApiConnectionOptions.js.map +1 -1
  620. package/driver/aurora-data-api/AuroraDataApiDriver.d.ts +3 -3
  621. package/driver/aurora-data-api/AuroraDataApiDriver.js +16 -6
  622. package/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
  623. package/driver/aurora-data-api/AuroraDataApiQueryRunner.d.ts +6 -1
  624. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +73 -11
  625. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  626. package/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.d.ts +2 -0
  627. package/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.js.map +1 -1
  628. package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.d.ts +10 -1
  629. package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js +27 -2
  630. package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js.map +1 -1
  631. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.d.ts +2 -1
  632. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +60 -11
  633. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
  634. package/driver/better-sqlite3/BetterSqlite3Driver.js +1 -0
  635. package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  636. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +1 -0
  637. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  638. package/driver/cockroachdb/CockroachDriver.d.ts +1 -1
  639. package/driver/cockroachdb/CockroachDriver.js +6 -8
  640. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  641. package/driver/cockroachdb/CockroachQueryRunner.d.ts +4 -0
  642. package/driver/cockroachdb/CockroachQueryRunner.js +113 -42
  643. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  644. package/driver/cordova/CordovaDriver.js +1 -0
  645. package/driver/cordova/CordovaDriver.js.map +1 -1
  646. package/driver/cordova/CordovaQueryRunner.js +1 -0
  647. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  648. package/driver/expo/ExpoDriver.js +1 -0
  649. package/driver/expo/ExpoDriver.js.map +1 -1
  650. package/driver/expo/ExpoQueryRunner.js +73 -14
  651. package/driver/expo/ExpoQueryRunner.js.map +1 -1
  652. package/driver/mongodb/MongoConnectionOptions.d.ts +8 -0
  653. package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  654. package/driver/mongodb/MongoDriver.d.ts +8 -4
  655. package/driver/mongodb/MongoDriver.js +27 -14
  656. package/driver/mongodb/MongoDriver.js.map +1 -1
  657. package/driver/mongodb/MongoQueryRunner.d.ts +3 -3
  658. package/driver/mongodb/MongoQueryRunner.js +1 -0
  659. package/driver/mongodb/MongoQueryRunner.js.map +1 -1
  660. package/driver/mysql/MysqlConnectionCredentialsOptions.d.ts +4 -0
  661. package/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
  662. package/driver/mysql/MysqlDriver.d.ts +2 -2
  663. package/driver/mysql/MysqlDriver.js +16 -14
  664. package/driver/mysql/MysqlDriver.js.map +1 -1
  665. package/driver/mysql/MysqlQueryRunner.d.ts +4 -0
  666. package/driver/mysql/MysqlQueryRunner.js +119 -43
  667. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  668. package/driver/nativescript/NativescriptDriver.js +1 -0
  669. package/driver/nativescript/NativescriptDriver.js.map +1 -1
  670. package/driver/nativescript/NativescriptQueryRunner.js +1 -0
  671. package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  672. package/driver/oracle/OracleConnectionOptions.d.ts +4 -0
  673. package/driver/oracle/OracleConnectionOptions.js.map +1 -1
  674. package/driver/oracle/OracleDriver.d.ts +1 -1
  675. package/driver/oracle/OracleDriver.js +29 -3
  676. package/driver/oracle/OracleDriver.js.map +1 -1
  677. package/driver/oracle/OracleQueryRunner.js +54 -7
  678. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  679. package/driver/postgres/PostgresConnectionOptions.d.ts +4 -0
  680. package/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  681. package/driver/postgres/PostgresDriver.d.ts +2 -2
  682. package/driver/postgres/PostgresDriver.js +63 -28
  683. package/driver/postgres/PostgresDriver.js.map +1 -1
  684. package/driver/postgres/PostgresQueryRunner.d.ts +9 -1
  685. package/driver/postgres/PostgresQueryRunner.js +337 -211
  686. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  687. package/driver/react-native/ReactNativeDriver.js +2 -2
  688. package/driver/react-native/ReactNativeDriver.js.map +1 -1
  689. package/driver/react-native/ReactNativeQueryRunner.js +1 -0
  690. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  691. package/driver/sap/SapDriver.d.ts +1 -1
  692. package/driver/sap/SapDriver.js +1 -0
  693. package/driver/sap/SapDriver.js.map +1 -1
  694. package/driver/sap/SapQueryRunner.js +58 -9
  695. package/driver/sap/SapQueryRunner.js.map +1 -1
  696. package/driver/sqlite/SqliteDriver.js +1 -0
  697. package/driver/sqlite/SqliteDriver.js.map +1 -1
  698. package/driver/sqlite/SqliteQueryRunner.js +5 -0
  699. package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  700. package/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +1 -1
  701. package/driver/sqlite-abstract/AbstractSqliteDriver.js +5 -1
  702. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  703. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +56 -8
  704. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  705. package/driver/sqljs/SqljsDriver.js +1 -0
  706. package/driver/sqljs/SqljsDriver.js.map +1 -1
  707. package/driver/sqljs/SqljsQueryRunner.js +1 -0
  708. package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  709. package/driver/sqlserver/MssqlParameter.js +1 -0
  710. package/driver/sqlserver/MssqlParameter.js.map +1 -1
  711. package/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts +18 -2
  712. package/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
  713. package/driver/sqlserver/SqlServerDriver.d.ts +2 -2
  714. package/driver/sqlserver/SqlServerDriver.js +34 -8
  715. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  716. package/driver/sqlserver/SqlServerQueryRunner.d.ts +1 -0
  717. package/driver/sqlserver/SqlServerQueryRunner.js +166 -85
  718. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  719. package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.d.ts +10 -0
  720. package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js +4 -0
  721. package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -0
  722. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.d.ts +20 -0
  723. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js +4 -0
  724. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -0
  725. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.d.ts +16 -0
  726. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js +4 -0
  727. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -0
  728. package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.d.ts +17 -0
  729. package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js +4 -0
  730. package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -0
  731. package/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.d.ts +17 -0
  732. package/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js +4 -0
  733. package/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js.map +1 -0
  734. package/driver/sqlserver/authentication/DefaultAuthentication.d.ts +13 -0
  735. package/driver/sqlserver/authentication/DefaultAuthentication.js +4 -0
  736. package/driver/sqlserver/authentication/DefaultAuthentication.js.map +1 -0
  737. package/driver/sqlserver/authentication/NtlmAuthentication.d.ts +19 -0
  738. package/driver/sqlserver/authentication/NtlmAuthentication.js +4 -0
  739. package/driver/sqlserver/authentication/NtlmAuthentication.js.map +1 -0
  740. package/driver/types/ColumnTypes.d.ts +1 -1
  741. package/driver/types/ColumnTypes.js.map +1 -1
  742. package/entity-manager/EntityManager.d.ts +16 -2
  743. package/entity-manager/EntityManager.js +6 -16
  744. package/entity-manager/EntityManager.js.map +1 -1
  745. package/entity-manager/EntityManagerFactory.js +1 -0
  746. package/entity-manager/EntityManagerFactory.js.map +1 -1
  747. package/entity-manager/MongoEntityManager.d.ts +1 -4
  748. package/entity-manager/MongoEntityManager.js +54 -48
  749. package/entity-manager/MongoEntityManager.js.map +1 -1
  750. package/entity-manager/SqljsEntityManager.js +1 -0
  751. package/entity-manager/SqljsEntityManager.js.map +1 -1
  752. package/entity-schema/EntitySchema.js +1 -0
  753. package/entity-schema/EntitySchema.js.map +1 -1
  754. package/entity-schema/EntitySchemaOptions.js +1 -0
  755. package/entity-schema/EntitySchemaOptions.js.map +1 -1
  756. package/entity-schema/EntitySchemaTransformer.js +1 -0
  757. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  758. package/error/AlreadyHasActiveConnectionError.js +1 -0
  759. package/error/AlreadyHasActiveConnectionError.js.map +1 -1
  760. package/error/CannotAttachTreeChildrenEntityError.js +1 -0
  761. package/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
  762. package/error/CannotConnectAlreadyConnectedError.js +1 -0
  763. package/error/CannotConnectAlreadyConnectedError.js.map +1 -1
  764. package/error/CannotCreateEntityIdMapError.js +1 -0
  765. package/error/CannotCreateEntityIdMapError.js.map +1 -1
  766. package/error/CannotDetermineEntityError.js +1 -0
  767. package/error/CannotDetermineEntityError.js.map +1 -1
  768. package/error/CannotExecuteNotConnectedError.js +1 -0
  769. package/error/CannotExecuteNotConnectedError.js.map +1 -1
  770. package/error/CannotGetEntityManagerNotConnectedError.js +1 -0
  771. package/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
  772. package/error/CannotReflectMethodParameterTypeError.js +1 -0
  773. package/error/CannotReflectMethodParameterTypeError.js.map +1 -1
  774. package/error/CircularRelationsError.js +1 -0
  775. package/error/CircularRelationsError.js.map +1 -1
  776. package/error/ColumnTypeUndefinedError.js +1 -0
  777. package/error/ColumnTypeUndefinedError.js.map +1 -1
  778. package/error/ConnectionIsNotSetError.js +1 -0
  779. package/error/ConnectionIsNotSetError.js.map +1 -1
  780. package/error/ConnectionNotFoundError.js +1 -0
  781. package/error/ConnectionNotFoundError.js.map +1 -1
  782. package/error/CustomRepositoryCannotInheritRepositoryError.js +1 -0
  783. package/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
  784. package/error/CustomRepositoryDoesNotHaveEntityError.js +1 -0
  785. package/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
  786. package/error/CustomRepositoryNotFoundError.js +1 -0
  787. package/error/CustomRepositoryNotFoundError.js.map +1 -1
  788. package/error/DataTypeNotSupportedError.js +1 -0
  789. package/error/DataTypeNotSupportedError.js.map +1 -1
  790. package/error/DriverOptionNotSetError.js +1 -0
  791. package/error/DriverOptionNotSetError.js.map +1 -1
  792. package/error/DriverPackageNotInstalledError.js +1 -0
  793. package/error/DriverPackageNotInstalledError.js.map +1 -1
  794. package/error/EntityColumnNotFound.js +1 -0
  795. package/error/EntityColumnNotFound.js.map +1 -1
  796. package/error/EntityMetadataNotFoundError.js +1 -0
  797. package/error/EntityMetadataNotFoundError.js.map +1 -1
  798. package/error/EntityNotFoundError.js +1 -0
  799. package/error/EntityNotFoundError.js.map +1 -1
  800. package/error/FindRelationsNotFoundError.js +1 -0
  801. package/error/FindRelationsNotFoundError.js.map +1 -1
  802. package/error/InitializedRelationError.js +1 -0
  803. package/error/InitializedRelationError.js.map +1 -1
  804. package/error/InsertValuesMissingError.js +1 -0
  805. package/error/InsertValuesMissingError.js.map +1 -1
  806. package/error/LimitOnUpdateNotSupportedError.js +1 -0
  807. package/error/LimitOnUpdateNotSupportedError.js.map +1 -1
  808. package/error/LockNotSupportedOnGivenDriverError.js +1 -0
  809. package/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
  810. package/error/MetadataAlreadyExistsError.js +1 -0
  811. package/error/MetadataAlreadyExistsError.js.map +1 -1
  812. package/error/MetadataWithSuchNameAlreadyExistsError.js +1 -0
  813. package/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
  814. package/error/MissingDeleteDateColumnError.js +1 -0
  815. package/error/MissingDeleteDateColumnError.js.map +1 -1
  816. package/error/MissingDriverError.js +1 -0
  817. package/error/MissingDriverError.js.map +1 -1
  818. package/error/MissingJoinColumnError.js +1 -0
  819. package/error/MissingJoinColumnError.js.map +1 -1
  820. package/error/MissingJoinTableError.js +1 -0
  821. package/error/MissingJoinTableError.js.map +1 -1
  822. package/error/MissingPrimaryColumnError.js +1 -0
  823. package/error/MissingPrimaryColumnError.js.map +1 -1
  824. package/error/MustBeEntityError.js +1 -0
  825. package/error/MustBeEntityError.js.map +1 -1
  826. package/error/NamingStrategyNotFoundError.js +1 -0
  827. package/error/NamingStrategyNotFoundError.js.map +1 -1
  828. package/error/NoConnectionForRepositoryError.js +1 -0
  829. package/error/NoConnectionForRepositoryError.js.map +1 -1
  830. package/error/NoConnectionOptionError.js +1 -0
  831. package/error/NoConnectionOptionError.js.map +1 -1
  832. package/error/NoNeedToReleaseEntityManagerError.js +1 -0
  833. package/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
  834. package/error/NoVersionOrUpdateDateColumnError.js +1 -0
  835. package/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
  836. package/error/OffsetWithoutLimitNotSupportedError.js +1 -0
  837. package/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
  838. package/error/OptimisticLockCanNotBeUsedError.js +1 -0
  839. package/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
  840. package/error/OptimisticLockVersionMismatchError.js +1 -0
  841. package/error/OptimisticLockVersionMismatchError.js.map +1 -1
  842. package/error/PersistedEntityNotFoundError.js +1 -0
  843. package/error/PersistedEntityNotFoundError.js.map +1 -1
  844. package/error/PessimisticLockTransactionRequiredError.js +1 -0
  845. package/error/PessimisticLockTransactionRequiredError.js.map +1 -1
  846. package/error/PrimaryColumnCannotBeNullableError.js +1 -0
  847. package/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
  848. package/error/QueryFailedError.js +1 -0
  849. package/error/QueryFailedError.js.map +1 -1
  850. package/error/QueryRunnerAlreadyReleasedError.js +1 -0
  851. package/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
  852. package/error/QueryRunnerProviderAlreadyReleasedError.js +1 -0
  853. package/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
  854. package/error/RepositoryNotFoundError.js +1 -0
  855. package/error/RepositoryNotFoundError.js.map +1 -1
  856. package/error/RepositoryNotTreeError.js +1 -0
  857. package/error/RepositoryNotTreeError.js.map +1 -1
  858. package/error/ReturningStatementNotSupportedError.js +1 -0
  859. package/error/ReturningStatementNotSupportedError.js.map +1 -1
  860. package/error/SubjectRemovedAndUpdatedError.js +1 -0
  861. package/error/SubjectRemovedAndUpdatedError.js.map +1 -1
  862. package/error/SubjectWithoutIdentifierError.js +1 -0
  863. package/error/SubjectWithoutIdentifierError.js.map +1 -1
  864. package/error/TransactionAlreadyStartedError.js +1 -0
  865. package/error/TransactionAlreadyStartedError.js.map +1 -1
  866. package/error/TransactionNotStartedError.js +1 -0
  867. package/error/TransactionNotStartedError.js.map +1 -1
  868. package/error/TreeRepositoryNotSupportedError.js +1 -0
  869. package/error/TreeRepositoryNotSupportedError.js.map +1 -1
  870. package/error/UpdateValuesMissingError.js +1 -0
  871. package/error/UpdateValuesMissingError.js.map +1 -1
  872. package/error/UsingJoinColumnIsNotAllowedError.js +1 -0
  873. package/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
  874. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js +1 -0
  875. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
  876. package/error/UsingJoinTableIsNotAllowedError.js +1 -0
  877. package/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
  878. package/error/UsingJoinTableOnlyOnOneSideAllowedError.js +1 -0
  879. package/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
  880. package/error/index.d.ts +61 -0
  881. package/error/index.js +66 -0
  882. package/error/index.js.map +1 -0
  883. package/find-options/FindOneOptions.d.ts +10 -2
  884. package/find-options/FindOneOptions.js.map +1 -1
  885. package/find-options/FindOperator.d.ts +25 -6
  886. package/find-options/FindOperator.js +33 -6
  887. package/find-options/FindOperator.js.map +1 -1
  888. package/find-options/FindOperatorType.d.ts +1 -1
  889. package/find-options/FindOperatorType.js.map +1 -1
  890. package/find-options/FindOptionsUtils.js +16 -2
  891. package/find-options/FindOptionsUtils.js.map +1 -1
  892. package/find-options/JoinOptions.d.ts +16 -4
  893. package/find-options/JoinOptions.js.map +1 -1
  894. package/find-options/operator/Any.js +1 -0
  895. package/find-options/operator/Any.js.map +1 -1
  896. package/find-options/operator/Between.js +1 -0
  897. package/find-options/operator/Between.js.map +1 -1
  898. package/find-options/operator/Equal.js +1 -0
  899. package/find-options/operator/Equal.js.map +1 -1
  900. package/find-options/operator/ILike.d.ts +6 -0
  901. package/find-options/operator/ILike.js +14 -0
  902. package/find-options/operator/ILike.js.map +1 -0
  903. package/find-options/operator/In.js +1 -0
  904. package/find-options/operator/In.js.map +1 -1
  905. package/find-options/operator/IsNull.js +1 -0
  906. package/find-options/operator/IsNull.js.map +1 -1
  907. package/find-options/operator/LessThan.js +1 -0
  908. package/find-options/operator/LessThan.js.map +1 -1
  909. package/find-options/operator/LessThanOrEqual.js +1 -0
  910. package/find-options/operator/LessThanOrEqual.js.map +1 -1
  911. package/find-options/operator/Like.js +1 -0
  912. package/find-options/operator/Like.js.map +1 -1
  913. package/find-options/operator/MoreThan.js +1 -0
  914. package/find-options/operator/MoreThan.js.map +1 -1
  915. package/find-options/operator/MoreThanOrEqual.js +1 -0
  916. package/find-options/operator/MoreThanOrEqual.js.map +1 -1
  917. package/find-options/operator/Not.js +1 -0
  918. package/find-options/operator/Not.js.map +1 -1
  919. package/find-options/operator/Raw.d.ts +14 -2
  920. package/find-options/operator/Raw.js +6 -6
  921. package/find-options/operator/Raw.js.map +1 -1
  922. package/index.d.ts +3 -1
  923. package/index.js +44 -19
  924. package/index.js.map +1 -1
  925. package/logger/AdvancedConsoleLogger.d.ts +2 -1
  926. package/logger/AdvancedConsoleLogger.js +1 -0
  927. package/logger/AdvancedConsoleLogger.js.map +1 -1
  928. package/logger/DebugLogger.js +1 -0
  929. package/logger/DebugLogger.js.map +1 -1
  930. package/logger/FileLogger.d.ts +2 -2
  931. package/logger/FileLogger.js +1 -0
  932. package/logger/FileLogger.js.map +1 -1
  933. package/logger/Logger.d.ts +1 -1
  934. package/logger/Logger.js.map +1 -1
  935. package/logger/LoggerFactory.js +1 -0
  936. package/logger/LoggerFactory.js.map +1 -1
  937. package/logger/SimpleConsoleLogger.d.ts +2 -1
  938. package/logger/SimpleConsoleLogger.js +1 -0
  939. package/logger/SimpleConsoleLogger.js.map +1 -1
  940. package/metadata/CheckMetadata.js +1 -0
  941. package/metadata/CheckMetadata.js.map +1 -1
  942. package/metadata/ColumnMetadata.d.ts +1 -1
  943. package/metadata/ColumnMetadata.js +23 -14
  944. package/metadata/ColumnMetadata.js.map +1 -1
  945. package/metadata/EmbeddedMetadata.js +2 -1
  946. package/metadata/EmbeddedMetadata.js.map +1 -1
  947. package/metadata/EntityListenerMetadata.js +1 -0
  948. package/metadata/EntityListenerMetadata.js.map +1 -1
  949. package/metadata/EntityMetadata.d.ts +5 -0
  950. package/metadata/EntityMetadata.js +3 -1
  951. package/metadata/EntityMetadata.js.map +1 -1
  952. package/metadata/ExclusionMetadata.js +1 -0
  953. package/metadata/ExclusionMetadata.js.map +1 -1
  954. package/metadata/ForeignKeyMetadata.js +1 -0
  955. package/metadata/ForeignKeyMetadata.js.map +1 -1
  956. package/metadata/IndexMetadata.js +1 -0
  957. package/metadata/IndexMetadata.js.map +1 -1
  958. package/metadata/RelationCountMetadata.js +1 -0
  959. package/metadata/RelationCountMetadata.js.map +1 -1
  960. package/metadata/RelationIdMetadata.js +1 -0
  961. package/metadata/RelationIdMetadata.js.map +1 -1
  962. package/metadata/RelationMetadata.d.ts +15 -0
  963. package/metadata/RelationMetadata.js +23 -6
  964. package/metadata/RelationMetadata.js.map +1 -1
  965. package/metadata/UniqueMetadata.js +1 -0
  966. package/metadata/UniqueMetadata.js.map +1 -1
  967. package/metadata/types/ClosureTreeOptions.d.ts +10 -0
  968. package/metadata/types/ClosureTreeOptions.js +4 -0
  969. package/metadata/types/ClosureTreeOptions.js.map +1 -0
  970. package/metadata/types/EventListenerTypes.d.ts +7 -7
  971. package/metadata/types/EventListenerTypes.js +1 -0
  972. package/metadata/types/EventListenerTypes.js.map +1 -1
  973. package/metadata-args/MetadataArgsStorage.js +1 -0
  974. package/metadata-args/MetadataArgsStorage.js.map +1 -1
  975. package/metadata-args/TreeMetadataArgs.d.ts +5 -0
  976. package/metadata-args/TreeMetadataArgs.js.map +1 -1
  977. package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +6 -3
  978. package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  979. package/metadata-builder/EntityMetadataBuilder.js +26 -15
  980. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  981. package/metadata-builder/EntityMetadataValidator.js +11 -5
  982. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  983. package/metadata-builder/JunctionEntityMetadataBuilder.js +8 -3
  984. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  985. package/metadata-builder/MetadataUtils.js +1 -0
  986. package/metadata-builder/MetadataUtils.js.map +1 -1
  987. package/metadata-builder/RelationJoinColumnBuilder.d.ts +1 -0
  988. package/metadata-builder/RelationJoinColumnBuilder.js +9 -6
  989. package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  990. package/migration/Migration.js +1 -0
  991. package/migration/Migration.js.map +1 -1
  992. package/migration/MigrationExecutor.js +6 -5
  993. package/migration/MigrationExecutor.js.map +1 -1
  994. package/naming-strategy/DefaultNamingStrategy.d.ts +1 -1
  995. package/naming-strategy/DefaultNamingStrategy.js +9 -7
  996. package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  997. package/naming-strategy/NamingStrategyInterface.d.ts +6 -1
  998. package/naming-strategy/NamingStrategyInterface.js.map +1 -1
  999. package/package.json +46 -43
  1000. package/persistence/EntityPersistExecutor.js +56 -52
  1001. package/persistence/EntityPersistExecutor.js.map +1 -1
  1002. package/persistence/Subject.d.ts +4 -4
  1003. package/persistence/Subject.js +8 -6
  1004. package/persistence/Subject.js.map +1 -1
  1005. package/persistence/SubjectChangedColumnsComputer.js +4 -1
  1006. package/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  1007. package/persistence/SubjectDatabaseEntityLoader.js +2 -1
  1008. package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  1009. package/persistence/SubjectExecutor.js +31 -26
  1010. package/persistence/SubjectExecutor.js.map +1 -1
  1011. package/persistence/SubjectTopoligicalSorter.js +6 -5
  1012. package/persistence/SubjectTopoligicalSorter.js.map +1 -1
  1013. package/persistence/subject-builder/CascadesSubjectBuilder.js +1 -0
  1014. package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  1015. package/persistence/subject-builder/ManyToManySubjectBuilder.js +3 -0
  1016. package/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  1017. package/persistence/subject-builder/OneToManySubjectBuilder.js +10 -4
  1018. package/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  1019. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +1 -0
  1020. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  1021. package/persistence/tree/ClosureSubjectExecutor.d.ts +1 -1
  1022. package/persistence/tree/ClosureSubjectExecutor.js +7 -6
  1023. package/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  1024. package/persistence/tree/MaterializedPathSubjectExecutor.js +1 -0
  1025. package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  1026. package/persistence/tree/NestedSetSubjectExecutor.js +1 -0
  1027. package/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  1028. package/platform/PlatformTools.js +5 -4
  1029. package/platform/PlatformTools.js.map +1 -1
  1030. package/query-builder/Alias.d.ts +4 -3
  1031. package/query-builder/Alias.js +4 -3
  1032. package/query-builder/Alias.js.map +1 -1
  1033. package/query-builder/Brackets.js +1 -0
  1034. package/query-builder/Brackets.js.map +1 -1
  1035. package/query-builder/DeleteQueryBuilder.js +8 -2
  1036. package/query-builder/DeleteQueryBuilder.js.map +1 -1
  1037. package/query-builder/InsertQueryBuilder.d.ts +6 -0
  1038. package/query-builder/InsertQueryBuilder.js +64 -14
  1039. package/query-builder/InsertQueryBuilder.js.map +1 -1
  1040. package/query-builder/JoinAttribute.d.ts +10 -10
  1041. package/query-builder/JoinAttribute.js +11 -10
  1042. package/query-builder/JoinAttribute.js.map +1 -1
  1043. package/query-builder/QueryBuilder.d.ts +8 -1
  1044. package/query-builder/QueryBuilder.js +172 -36
  1045. package/query-builder/QueryBuilder.js.map +1 -1
  1046. package/query-builder/QueryBuilderUtils.js +1 -0
  1047. package/query-builder/QueryBuilderUtils.js.map +1 -1
  1048. package/query-builder/QueryExpressionMap.d.ts +10 -2
  1049. package/query-builder/QueryExpressionMap.js +5 -2
  1050. package/query-builder/QueryExpressionMap.js.map +1 -1
  1051. package/query-builder/RelationIdLoader.js +1 -0
  1052. package/query-builder/RelationIdLoader.js.map +1 -1
  1053. package/query-builder/RelationLoader.js +4 -3
  1054. package/query-builder/RelationLoader.js.map +1 -1
  1055. package/query-builder/RelationQueryBuilder.js +2 -1
  1056. package/query-builder/RelationQueryBuilder.js.map +1 -1
  1057. package/query-builder/RelationRemover.js +11 -10
  1058. package/query-builder/RelationRemover.js.map +1 -1
  1059. package/query-builder/RelationUpdater.js +1 -0
  1060. package/query-builder/RelationUpdater.js.map +1 -1
  1061. package/query-builder/ReturningResultsEntityUpdator.js +1 -0
  1062. package/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  1063. package/query-builder/SelectQueryBuilder.d.ts +7 -6
  1064. package/query-builder/SelectQueryBuilder.js +129 -66
  1065. package/query-builder/SelectQueryBuilder.js.map +1 -1
  1066. package/query-builder/SoftDeleteQueryBuilder.js +1 -0
  1067. package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  1068. package/query-builder/UpdateQueryBuilder.js +7 -1
  1069. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  1070. package/query-builder/relation-count/RelationCountAttribute.d.ts +7 -7
  1071. package/query-builder/relation-count/RelationCountAttribute.js +8 -7
  1072. package/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  1073. package/query-builder/relation-count/RelationCountLoader.js +3 -1
  1074. package/query-builder/relation-count/RelationCountLoader.js.map +1 -1
  1075. package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js +1 -0
  1076. package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
  1077. package/query-builder/relation-id/RelationIdAttribute.d.ts +8 -8
  1078. package/query-builder/relation-id/RelationIdAttribute.js +9 -8
  1079. package/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  1080. package/query-builder/relation-id/RelationIdLoader.js +62 -11
  1081. package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  1082. package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js +1 -0
  1083. package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
  1084. package/query-builder/result/DeleteResult.js +1 -0
  1085. package/query-builder/result/DeleteResult.js.map +1 -1
  1086. package/query-builder/result/InsertResult.js +1 -0
  1087. package/query-builder/result/InsertResult.js.map +1 -1
  1088. package/query-builder/result/UpdateResult.js +1 -0
  1089. package/query-builder/result/UpdateResult.js.map +1 -1
  1090. package/query-builder/transformer/DocumentToEntityTransformer.js +1 -0
  1091. package/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
  1092. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +4 -3
  1093. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  1094. package/query-builder/transformer/PlainObjectToNewEntityTransformer.js +1 -0
  1095. package/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
  1096. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +10 -6
  1097. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  1098. package/query-runner/BaseQueryRunner.js +3 -2
  1099. package/query-runner/BaseQueryRunner.js.map +1 -1
  1100. package/query-runner/QueryRunner.d.ts +1 -1
  1101. package/query-runner/QueryRunner.js.map +1 -1
  1102. package/repository/AbstractRepository.d.ts +2 -2
  1103. package/repository/AbstractRepository.js +3 -2
  1104. package/repository/AbstractRepository.js.map +1 -1
  1105. package/repository/BaseEntity.d.ts +1 -1
  1106. package/repository/BaseEntity.js +3 -2
  1107. package/repository/BaseEntity.js.map +1 -1
  1108. package/repository/MongoRepository.js +1 -0
  1109. package/repository/MongoRepository.js.map +1 -1
  1110. package/repository/Repository.d.ts +4 -4
  1111. package/repository/Repository.js +3 -2
  1112. package/repository/Repository.js.map +1 -1
  1113. package/repository/RepositoryFactory.js +1 -0
  1114. package/repository/RepositoryFactory.js.map +1 -1
  1115. package/repository/TreeRepository.js +4 -3
  1116. package/repository/TreeRepository.js.map +1 -1
  1117. package/schema-builder/MongoSchemaBuilder.js +1 -0
  1118. package/schema-builder/MongoSchemaBuilder.js.map +1 -1
  1119. package/schema-builder/RdbmsSchemaBuilder.d.ts +2 -2
  1120. package/schema-builder/RdbmsSchemaBuilder.js +81 -79
  1121. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  1122. package/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
  1123. package/schema-builder/table/Table.d.ts +1 -1
  1124. package/schema-builder/table/Table.js +2 -1
  1125. package/schema-builder/table/Table.js.map +1 -1
  1126. package/schema-builder/table/TableCheck.js +2 -1
  1127. package/schema-builder/table/TableCheck.js.map +1 -1
  1128. package/schema-builder/table/TableColumn.js +1 -0
  1129. package/schema-builder/table/TableColumn.js.map +1 -1
  1130. package/schema-builder/table/TableExclusion.js +1 -0
  1131. package/schema-builder/table/TableExclusion.js.map +1 -1
  1132. package/schema-builder/table/TableForeignKey.js +3 -2
  1133. package/schema-builder/table/TableForeignKey.js.map +1 -1
  1134. package/schema-builder/table/TableIndex.js +2 -1
  1135. package/schema-builder/table/TableIndex.js.map +1 -1
  1136. package/schema-builder/table/TableUnique.js +2 -1
  1137. package/schema-builder/table/TableUnique.js.map +1 -1
  1138. package/schema-builder/util/TableUtils.js +1 -0
  1139. package/schema-builder/util/TableUtils.js.map +1 -1
  1140. package/schema-builder/view/View.js +1 -0
  1141. package/schema-builder/view/View.js.map +1 -1
  1142. package/subscriber/Broadcaster.d.ts +24 -0
  1143. package/subscriber/Broadcaster.js +121 -0
  1144. package/subscriber/Broadcaster.js.map +1 -1
  1145. package/subscriber/BroadcasterResult.js +1 -0
  1146. package/subscriber/BroadcasterResult.js.map +1 -1
  1147. package/subscriber/EntitySubscriberInterface.d.ts +27 -0
  1148. package/subscriber/EntitySubscriberInterface.js.map +1 -1
  1149. package/subscriber/event/TransactionCommitEvent.d.ts +22 -0
  1150. package/subscriber/event/TransactionCommitEvent.js +4 -0
  1151. package/subscriber/event/TransactionCommitEvent.js.map +1 -0
  1152. package/subscriber/event/TransactionRollbackEvent.d.ts +22 -0
  1153. package/subscriber/event/TransactionRollbackEvent.js +4 -0
  1154. package/subscriber/event/TransactionRollbackEvent.js.map +1 -0
  1155. package/subscriber/event/TransactionStartEvent.d.ts +22 -0
  1156. package/subscriber/event/TransactionStartEvent.js +4 -0
  1157. package/subscriber/event/TransactionStartEvent.js.map +1 -0
  1158. package/typeorm-model-shim.js +145 -128
  1159. package/util/ApplyValueTransformers.js +1 -0
  1160. package/util/ApplyValueTransformers.js.map +1 -1
  1161. package/util/DateUtils.d.ts +1 -1
  1162. package/util/DateUtils.js +2 -7
  1163. package/util/DateUtils.js.map +1 -1
  1164. package/util/DepGraph.js +1 -0
  1165. package/util/DepGraph.js.map +1 -1
  1166. package/util/DirectoryExportedClassesLoader.js +1 -0
  1167. package/util/DirectoryExportedClassesLoader.js.map +1 -1
  1168. package/util/ObjectUtils.js +1 -0
  1169. package/util/ObjectUtils.js.map +1 -1
  1170. package/util/OrmUtils.d.ts +1 -1
  1171. package/util/OrmUtils.js +2 -1
  1172. package/util/OrmUtils.js.map +1 -1
  1173. package/util/RandomGenerator.js +1 -0
  1174. package/util/RandomGenerator.js.map +1 -1
  1175. package/util/StringUtils.js +1 -0
  1176. package/util/StringUtils.js.map +1 -1
  1177. package/util/VersionUtils.js +1 -0
  1178. package/util/VersionUtils.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/driver/sap/SapQueryRunner.ts"],"names":[],"mappings":"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","file":"SapQueryRunner.js","sourcesContent":["import {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {QueryRunnerAlreadyReleasedError} from \"../../error/QueryRunnerAlreadyReleasedError\";\nimport {TransactionAlreadyStartedError} from \"../../error/TransactionAlreadyStartedError\";\nimport {TransactionNotStartedError} from \"../../error/TransactionNotStartedError\";\nimport {ColumnType, QueryFailedError} from \"../../index\";\nimport {ReadStream} from \"../../platform/PlatformTools\";\nimport {BaseQueryRunner} from \"../../query-runner/BaseQueryRunner\";\nimport {QueryRunner} from \"../../query-runner/QueryRunner\";\nimport {TableIndexOptions} from \"../../schema-builder/options/TableIndexOptions\";\nimport {Table} from \"../../schema-builder/table/Table\";\nimport {TableCheck} from \"../../schema-builder/table/TableCheck\";\nimport {TableColumn} from \"../../schema-builder/table/TableColumn\";\nimport {TableExclusion} from \"../../schema-builder/table/TableExclusion\";\nimport {TableForeignKey} from \"../../schema-builder/table/TableForeignKey\";\nimport {TableIndex} from \"../../schema-builder/table/TableIndex\";\nimport {TableUnique} from \"../../schema-builder/table/TableUnique\";\nimport {View} from \"../../schema-builder/view/View\";\nimport {Broadcaster} from \"../../subscriber/Broadcaster\";\nimport {OrmUtils} from \"../../util/OrmUtils\";\nimport {Query} from \"../Query\";\nimport {IsolationLevel} from \"../types/IsolationLevel\";\nimport {SapDriver} from \"./SapDriver\";\nimport {ReplicationMode} from \"../types/ReplicationMode\";\n\n/**\n * Runs queries on a single SQL Server database connection.\n */\nexport class SapQueryRunner extends BaseQueryRunner implements QueryRunner {\n\n // -------------------------------------------------------------------------\n // Public Implemented Properties\n // -------------------------------------------------------------------------\n\n /**\n * Database driver used by connection.\n */\n driver: SapDriver;\n\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Last executed query in a transaction.\n * This is needed because we cannot rely on parallel queries because we use second query\n * to select CURRENT_IDENTITY_VALUE()\n */\n protected queryResponsibilityChain: Promise<any>[] = [];\n\n /**\n * Promise used to obtain a database connection from a pool for a first time.\n */\n protected databaseConnectionPromise: Promise<any>;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(driver: SapDriver, mode: ReplicationMode) {\n super();\n this.driver = driver;\n this.connection = driver.connection;\n this.broadcaster = new Broadcaster(this);\n this.mode = mode;\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates/uses database connection from the connection pool to perform further operations.\n * Returns obtained database connection.\n */\n async connect(): Promise<any> {\n if (this.databaseConnection)\n return this.databaseConnection;\n\n this.databaseConnection = await this.driver.obtainMasterConnection();\n\n return this.databaseConnection;\n }\n\n /**\n * Releases used database connection.\n * You cannot use query runner methods once its released.\n */\n release(): Promise<void> {\n this.isReleased = true;\n\n if (this.databaseConnection) {\n return this.driver.master.release(this.databaseConnection);\n }\n\n return Promise.resolve();\n }\n\n /**\n * Starts transaction.\n */\n async startTransaction(isolationLevel?: IsolationLevel): Promise<void> {\n if (this.isReleased)\n throw new QueryRunnerAlreadyReleasedError();\n\n if (this.isTransactionActive)\n throw new TransactionAlreadyStartedError();\n\n this.isTransactionActive = true;\n if (isolationLevel) {\n await this.query(`SET TRANSACTION ISOLATION LEVEL ${isolationLevel || \"\"}`);\n }\n }\n\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n */\n async commitTransaction(): Promise<void> {\n if (this.isReleased)\n throw new QueryRunnerAlreadyReleasedError();\n\n if (!this.isTransactionActive)\n throw new TransactionNotStartedError();\n\n await this.query(\"COMMIT\");\n this.isTransactionActive = false;\n }\n\n /**\n * Rollbacks transaction.\n * Error will be thrown if transaction was not started.\n */\n async rollbackTransaction(): Promise<void> {\n if (this.isReleased)\n throw new QueryRunnerAlreadyReleasedError();\n\n if (!this.isTransactionActive)\n throw new TransactionNotStartedError();\n\n await this.query(\"ROLLBACK\");\n this.isTransactionActive = false;\n }\n\n /**\n * Executes a given SQL query.\n */\n async query(query: string, parameters?: any[]): Promise<any> {\n if (this.isReleased)\n throw new QueryRunnerAlreadyReleasedError();\n\n let waitingOkay: Function;\n const waitingPromise = new Promise((ok) => waitingOkay = ok);\n if (this.queryResponsibilityChain.length) {\n const otherWaitingPromises = [...this.queryResponsibilityChain];\n this.queryResponsibilityChain.push(waitingPromise);\n await Promise.all(otherWaitingPromises);\n }\n\n const promise = new Promise(async (ok, fail) => {\n try {\n const databaseConnection = await this.connect();\n // we disable autocommit because ROLLBACK does not work in autocommit mode\n databaseConnection.setAutoCommit(!this.isTransactionActive);\n this.driver.connection.logger.logQuery(query, parameters, this);\n const queryStartTime = +new Date();\n const isInsertQuery = query.substr(0, 11) === \"INSERT INTO\";\n\n const statement = databaseConnection.prepare(query);\n statement.exec(parameters, (err: any, result: any) => {\n\n // log slow queries if maxQueryExecution time is set\n const maxQueryExecutionTime = this.driver.connection.options.maxQueryExecutionTime;\n const queryEndTime = +new Date();\n const queryExecutionTime = queryEndTime - queryStartTime;\n if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime)\n this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);\n\n const resolveChain = () => {\n if (promiseIndex !== -1)\n this.queryResponsibilityChain.splice(promiseIndex, 1);\n if (waitingPromiseIndex !== -1)\n this.queryResponsibilityChain.splice(waitingPromiseIndex, 1);\n waitingOkay();\n };\n\n let promiseIndex = this.queryResponsibilityChain.indexOf(promise);\n let waitingPromiseIndex = this.queryResponsibilityChain.indexOf(waitingPromise);\n if (err) {\n this.driver.connection.logger.logQueryError(err, query, parameters, this);\n resolveChain();\n return fail(new QueryFailedError(query, parameters, err));\n\n } else {\n if (isInsertQuery) {\n const lastIdQuery = `SELECT CURRENT_IDENTITY_VALUE() FROM \"SYS\".\"DUMMY\"`;\n this.driver.connection.logger.logQuery(lastIdQuery, [], this);\n databaseConnection.exec(lastIdQuery, (err: any, result: { \"CURRENT_IDENTITY_VALUE()\": number }[]) => {\n if (err) {\n this.driver.connection.logger.logQueryError(err, lastIdQuery, [], this);\n resolveChain();\n fail(new QueryFailedError(lastIdQuery, [], err));\n return;\n }\n ok(result[0][\"CURRENT_IDENTITY_VALUE()\"]);\n resolveChain();\n });\n } else {\n ok(result);\n resolveChain();\n }\n }\n });\n } catch (err) {\n fail(err);\n }\n });\n\n // with this condition, Promise.all causes unexpected behavior.\n // if (this.isTransactionActive)\n this.queryResponsibilityChain.push(promise);\n return promise;\n }\n\n /**\n * Returns raw data stream.\n */\n async stream(query: string, parameters?: any[], onEnd?: Function, onError?: Function): Promise<ReadStream> {\n throw new Error(`Stream is not supported by SAP driver.`);\n }\n\n /**\n * Returns all available database names including system databases.\n */\n async getDatabases(): Promise<string[]> {\n const results: ObjectLiteral[] = await this.query(`SELECT DATABASE_NAME FROM \"SYS\".\"M_DATABASES\"`);\n return results.map(result => result[\"DATABASE_NAME\"]);\n }\n\n /**\n * Returns all available schema names including system schemas.\n * If database parameter specified, returns schemas of that database.\n */\n async getSchemas(database?: string): Promise<string[]> {\n const query = database ? `SELECT * FROM \"${database}\".\"SYS\".\"SCHEMAS\"` : `SELECT * FROM \"SYS\".\"SCHEMAS\"`;\n const results: ObjectLiteral[] = await this.query(query);\n return results.map(result => result[\"SCHEMA_NAME\"]);\n }\n\n /**\n * Checks if database with the given name exist.\n */\n async hasDatabase(database: string): Promise<boolean> {\n const databases = await this.getDatabases();\n return databases.indexOf(database) !== -1;\n }\n\n /**\n * Checks if schema with the given name exist.\n */\n async hasSchema(schema: string): Promise<boolean> {\n const schemas = await this.getSchemas();\n return schemas.indexOf(schema) !== -1;\n }\n\n /**\n * Checks if table with the given name exist in the database.\n */\n async hasTable(tableOrName: Table|string): Promise<boolean> {\n const parsedTableName = this.parseTableName(tableOrName);\n const sql = `SELECT * FROM \"SYS\".\"TABLES\" WHERE \"SCHEMA_NAME\" = ${parsedTableName.schema} AND \"TABLE_NAME\" = ${parsedTableName.tableName}`;\n const result = await this.query(sql);\n return result.length ? true : false;\n }\n\n /**\n * Checks if column with the given name exist in the given table.\n */\n async hasColumn(tableOrName: Table|string, columnName: string): Promise<boolean> {\n const parsedTableName = this.parseTableName(tableOrName);\n const sql = `SELECT * FROM \"SYS\".\"TABLE_COLUMNS\" WHERE \"SCHEMA_NAME\" = ${parsedTableName.schema} AND \"TABLE_NAME\" = ${parsedTableName.tableName} AND \"COLUMN_NAME\" = '${columnName}'`;\n const result = await this.query(sql);\n return result.length ? true : false;\n }\n\n /**\n * Creates a new database.\n */\n async createDatabase(database: string, ifNotExist?: boolean): Promise<void> {\n return Promise.resolve();\n }\n\n /**\n * Drops database.\n */\n async dropDatabase(database: string, ifExist?: boolean): Promise<void> {\n return Promise.resolve();\n }\n\n /**\n * Creates a new table schema.\n */\n async createSchema(schema: string, ifNotExist?: boolean): Promise<void> {\n let exist = false;\n if (ifNotExist) {\n const result = await this.query(`SELECT * FROM \"SYS\".\"SCHEMAS\" WHERE \"SCHEMA_NAME\" = '${schema}'`);\n exist = !!result.length;\n }\n if (!ifNotExist || (ifNotExist && !exist)) {\n const up = `CREATE SCHEMA \"${schema}\"`;\n const down = `DROP SCHEMA \"${schema}\" CASCADE`;\n await this.executeQueries(new Query(up), new Query(down));\n }\n }\n\n /**\n * Drops table schema\n */\n async dropSchema(schemaPath: string, ifExist?: boolean, isCascade?: boolean): Promise<void> {\n const schema = schemaPath.indexOf(\".\") === -1 ? schemaPath : schemaPath.split(\".\")[0];\n let exist = false;\n if (ifExist) {\n const result = await this.query(`SELECT * FROM \"SYS\".\"SCHEMAS\" WHERE \"SCHEMA_NAME\" = '${schema}'`);\n exist = !!result.length;\n }\n if (!ifExist || (ifExist && exist)) {\n const up = `DROP SCHEMA \"${schema}\" ${isCascade ? \"CASCADE\" : \"\"}`;\n const down = `CREATE SCHEMA \"${schema}\"`;\n await this.executeQueries(new Query(up), new Query(down));\n }\n }\n\n /**\n * Creates a new table.\n */\n async createTable(table: Table, ifNotExist: boolean = false, createForeignKeys: boolean = true, createIndices: boolean = true): Promise<void> {\n if (ifNotExist) {\n const isTableExist = await this.hasTable(table);\n if (isTableExist) return Promise.resolve();\n }\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n\n upQueries.push(this.createTableSql(table, createForeignKeys));\n downQueries.push(this.dropTableSql(table));\n\n // if createForeignKeys is true, we must drop created foreign keys in down query.\n // createTable does not need separate method to create foreign keys, because it create fk's in the same query with table creation.\n if (createForeignKeys)\n table.foreignKeys.forEach(foreignKey => downQueries.push(this.dropForeignKeySql(table, foreignKey)));\n\n if (createIndices) {\n table.indices.forEach(index => {\n\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name)\n index.name = this.connection.namingStrategy.indexName(table.name, index.columnNames, index.where);\n upQueries.push(this.createIndexSql(table, index));\n downQueries.push(this.dropIndexSql(table, index));\n });\n }\n\n await this.executeQueries(upQueries, downQueries);\n }\n\n /**\n * Drops the table.\n */\n async dropTable(tableOrName: Table|string, ifExist?: boolean, dropForeignKeys: boolean = true, dropIndices: boolean = true): Promise<void> {\n if (ifExist) {\n const isTableExist = await this.hasTable(tableOrName);\n if (!isTableExist) return Promise.resolve();\n }\n\n // if dropTable called with dropForeignKeys = true, we must create foreign keys in down query.\n const createForeignKeys: boolean = dropForeignKeys;\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n\n // It needs because if table does not exist and dropForeignKeys or dropIndices is true, we don't need\n // to perform drop queries for foreign keys and indices.\n\n if (dropIndices) {\n table.indices.forEach(index => {\n upQueries.push(this.dropIndexSql(table, index));\n downQueries.push(this.createIndexSql(table, index));\n });\n }\n\n // if dropForeignKeys is true, we just drop the table, otherwise we also drop table foreign keys.\n // createTable does not need separate method to create foreign keys, because it create fk's in the same query with table creation.\n if (dropForeignKeys)\n table.foreignKeys.forEach(foreignKey => upQueries.push(this.dropForeignKeySql(table, foreignKey)));\n\n upQueries.push(this.dropTableSql(table));\n downQueries.push(this.createTableSql(table, createForeignKeys));\n\n await this.executeQueries(upQueries, downQueries);\n }\n\n /**\n * Creates a new view.\n */\n async createView(view: View): Promise<void> {\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n upQueries.push(this.createViewSql(view));\n upQueries.push(await this.insertViewDefinitionSql(view));\n downQueries.push(this.dropViewSql(view));\n downQueries.push(await this.deleteViewDefinitionSql(view));\n await this.executeQueries(upQueries, downQueries);\n }\n\n /**\n * Drops the view.\n */\n async dropView(target: View|string): Promise<void> {\n const viewName = target instanceof View ? target.name : target;\n const view = await this.getCachedView(viewName);\n\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n upQueries.push(await this.deleteViewDefinitionSql(view));\n upQueries.push(this.dropViewSql(view));\n downQueries.push(await this.insertViewDefinitionSql(view));\n downQueries.push(this.createViewSql(view));\n await this.executeQueries(upQueries, downQueries);\n }\n\n /**\n * Renames a table.\n */\n async renameTable(oldTableOrName: Table|string, newTableName: string): Promise<void> {\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n const oldTable = oldTableOrName instanceof Table ? oldTableOrName : await this.getCachedTable(oldTableOrName);\n const newTable = oldTable.clone();\n const oldTableName = oldTable.name.indexOf(\".\") === -1 ? oldTable.name : oldTable.name.split(\".\")[1];\n const schemaName = oldTable.name.indexOf(\".\") === -1 ? undefined : oldTable.name.split(\".\")[0];\n newTable.name = schemaName ? `${schemaName}.${newTableName}` : newTableName;\n\n // rename table\n upQueries.push(new Query(`RENAME TABLE ${this.escapePath(oldTable.name)} TO ${this.escapePath(newTableName)}`));\n downQueries.push(new Query(`RENAME TABLE ${this.escapePath(newTable.name)} TO ${this.escapePath(oldTableName)}`));\n\n // drop old FK's. Foreign keys must be dropped before the primary keys are dropped\n newTable.foreignKeys.forEach(foreignKey => {\n upQueries.push(this.dropForeignKeySql(newTable, foreignKey));\n downQueries.push(this.createForeignKeySql(newTable, foreignKey));\n });\n\n // SAP HANA does not allow to drop PK's which is referenced by foreign keys.\n // To avoid this, we must drop all referential foreign keys and recreate them later\n const referencedForeignKeySql = `SELECT * FROM \"SYS\".\"REFERENTIAL_CONSTRAINTS\" WHERE \"REFERENCED_SCHEMA_NAME\" = '${schemaName}' AND \"REFERENCED_TABLE_NAME\" = '${oldTableName}'`;\n const dbForeignKeys: ObjectLiteral[] = await this.query(referencedForeignKeySql);\n let referencedForeignKeys: TableForeignKey[] = [];\n const referencedForeignKeyTableMapping: { tableName: string, fkName: string }[] = [];\n if (dbForeignKeys.length > 0) {\n referencedForeignKeys = dbForeignKeys.map(dbForeignKey => {\n const foreignKeys = dbForeignKeys.filter(dbFk => dbFk[\"CONSTRAINT_NAME\"] === dbForeignKey[\"CONSTRAINT_NAME\"]);\n\n referencedForeignKeyTableMapping.push({ tableName: `${dbForeignKey[\"SCHEMA_NAME\"]}.${dbForeignKey[\"TABLE_NAME\"]}`, fkName: dbForeignKey[\"CONSTRAINT_NAME\"] });\n return new TableForeignKey({\n name: dbForeignKey[\"CONSTRAINT_NAME\"],\n columnNames: foreignKeys.map(dbFk => dbFk[\"COLUMN_NAME\"]),\n referencedTableName: newTable.name, // we use renamed table name\n referencedColumnNames: foreignKeys.map(dbFk => dbFk[\"REFERENCED_COLUMN_NAME\"]),\n onDelete: dbForeignKey[\"DELETE_RULE\"] === \"RESTRICT\" ? \"NO ACTION\" : dbForeignKey[\"DELETE_RULE\"],\n onUpdate: dbForeignKey[\"UPDATE_RULE\"] === \"RESTRICT\" ? \"NO ACTION\" : dbForeignKey[\"UPDATE_RULE\"],\n });\n });\n\n // drop referenced foreign keys\n referencedForeignKeys.forEach(foreignKey => {\n const mapping = referencedForeignKeyTableMapping.find(it => it.fkName === foreignKey.name);\n upQueries.push(this.dropForeignKeySql(mapping!.tableName, foreignKey));\n downQueries.push(this.createForeignKeySql(mapping!.tableName, foreignKey));\n });\n }\n\n // rename primary key constraint\n if (newTable.primaryColumns.length > 0) {\n const columnNames = newTable.primaryColumns.map(column => column.name);\n const columnNamesString = columnNames.map(columnName => `\"${columnName}\"`).join(\", \");\n\n const oldPkName = this.connection.namingStrategy.primaryKeyName(oldTable, columnNames);\n const newPkName = this.connection.namingStrategy.primaryKeyName(newTable, columnNames);\n\n // drop old PK\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(newTable)} DROP CONSTRAINT \"${oldPkName}\"`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(newTable)} ADD CONSTRAINT \"${oldPkName}\" PRIMARY KEY (${columnNamesString})`));\n\n // create new PK\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(newTable)} ADD CONSTRAINT \"${newPkName}\" PRIMARY KEY (${columnNamesString})`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(newTable)} DROP CONSTRAINT \"${newPkName}\"`));\n }\n\n // recreate foreign keys with new constraint names\n newTable.foreignKeys.forEach(foreignKey => {\n // replace constraint name\n foreignKey.name = this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, foreignKey.referencedTableName, foreignKey.referencedColumnNames);\n\n // create new FK's\n upQueries.push(this.createForeignKeySql(newTable, foreignKey));\n downQueries.push(this.dropForeignKeySql(newTable, foreignKey));\n });\n\n // restore referenced foreign keys\n referencedForeignKeys.forEach(foreignKey => {\n const mapping = referencedForeignKeyTableMapping.find(it => it.fkName === foreignKey.name);\n upQueries.push(this.createForeignKeySql(mapping!.tableName, foreignKey));\n downQueries.push(this.dropForeignKeySql(mapping!.tableName, foreignKey));\n });\n\n // rename index constraints\n newTable.indices.forEach(index => {\n // build new constraint name\n const newIndexName = this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);\n\n // drop old index\n upQueries.push(this.dropIndexSql(newTable, index));\n downQueries.push(this.createIndexSql(newTable, index));\n\n // replace constraint name\n index.name = newIndexName;\n\n // create new index\n upQueries.push(this.createIndexSql(newTable, index));\n downQueries.push(this.dropIndexSql(newTable, index));\n });\n\n await this.executeQueries(upQueries, downQueries);\n\n // rename old table and replace it in cached tabled;\n oldTable.name = newTable.name;\n this.replaceCachedTable(oldTable, newTable);\n }\n\n /**\n * Creates a new column from the column in the table.\n */\n async addColumn(tableOrName: Table|string, column: TableColumn): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const parsedTableName = this.parseTableName(table);\n const clonedTable = table.clone();\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n\n upQueries.push(new Query(this.addColumnSql(table, column)));\n downQueries.push(new Query(this.dropColumnSql(table, column)));\n\n // create or update primary key constraint\n if (column.isPrimary) {\n const primaryColumns = clonedTable.primaryColumns;\n // if table already have primary key, me must drop it and recreate again\n if (primaryColumns.length > 0) {\n // SAP HANA does not allow to drop PK's which is referenced by foreign keys.\n // To avoid this, we must drop all referential foreign keys and recreate them later\n const referencedForeignKeySql = `SELECT * FROM \"SYS\".\"REFERENTIAL_CONSTRAINTS\" WHERE \"REFERENCED_SCHEMA_NAME\" = ${parsedTableName.schema} AND \"REFERENCED_TABLE_NAME\" = ${parsedTableName.tableName}`;\n const dbForeignKeys: ObjectLiteral[] = await this.query(referencedForeignKeySql);\n let referencedForeignKeys: TableForeignKey[] = [];\n const referencedForeignKeyTableMapping: { tableName: string, fkName: string }[] = [];\n if (dbForeignKeys.length > 0) {\n referencedForeignKeys = dbForeignKeys.map(dbForeignKey => {\n const foreignKeys = dbForeignKeys.filter(dbFk => dbFk[\"CONSTRAINT_NAME\"] === dbForeignKey[\"CONSTRAINT_NAME\"]);\n\n referencedForeignKeyTableMapping.push({ tableName: `${dbForeignKey[\"SCHEMA_NAME\"]}.${dbForeignKey[\"TABLE_NAME\"]}`, fkName: dbForeignKey[\"CONSTRAINT_NAME\"] });\n return new TableForeignKey({\n name: dbForeignKey[\"CONSTRAINT_NAME\"],\n columnNames: foreignKeys.map(dbFk => dbFk[\"COLUMN_NAME\"]),\n referencedTableName: table.name,\n referencedColumnNames: foreignKeys.map(dbFk => dbFk[\"REFERENCED_COLUMN_NAME\"]),\n onDelete: dbForeignKey[\"DELETE_RULE\"] === \"RESTRICT\" ? \"NO ACTION\" : dbForeignKey[\"DELETE_RULE\"],\n onUpdate: dbForeignKey[\"UPDATE_RULE\"] === \"RESTRICT\" ? \"NO ACTION\" : dbForeignKey[\"UPDATE_RULE\"],\n });\n });\n\n // drop referenced foreign keys\n referencedForeignKeys.forEach(foreignKey => {\n const mapping = referencedForeignKeyTableMapping.find(it => it.fkName === foreignKey.name);\n upQueries.push(this.dropForeignKeySql(mapping!.tableName, foreignKey));\n downQueries.push(this.createForeignKeySql(mapping!.tableName, foreignKey));\n });\n }\n\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(column => column.name));\n const columnNames = primaryColumns.map(column => `\"${column.name}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${pkName}\"`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`));\n\n // restore referenced foreign keys\n referencedForeignKeys.forEach(foreignKey => {\n const mapping = referencedForeignKeyTableMapping.find(it => it.fkName === foreignKey.name);\n upQueries.push(this.createForeignKeySql(mapping!.tableName, foreignKey));\n downQueries.push(this.dropForeignKeySql(mapping!.tableName, foreignKey));\n });\n }\n\n primaryColumns.push(column);\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(column => column.name));\n const columnNames = primaryColumns.map(column => `\"${column.name}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${pkName}\"`));\n }\n\n // create column index\n const columnIndex = clonedTable.indices.find(index => index.columnNames.length === 1 && index.columnNames[0] === column.name);\n if (columnIndex) {\n upQueries.push(this.createIndexSql(table, columnIndex));\n downQueries.push(this.dropIndexSql(table, columnIndex));\n\n } else if (column.isUnique) {\n const uniqueIndex = new TableIndex({\n name: this.connection.namingStrategy.indexName(table.name, [column.name]),\n columnNames: [column.name],\n isUnique: true\n });\n clonedTable.indices.push(uniqueIndex);\n clonedTable.uniques.push(new TableUnique({\n name: uniqueIndex.name,\n columnNames: uniqueIndex.columnNames\n }));\n upQueries.push(this.createIndexSql(table, uniqueIndex));\n downQueries.push(this.dropIndexSql(table, uniqueIndex));\n }\n\n await this.executeQueries(upQueries, downQueries);\n\n clonedTable.addColumn(column);\n this.replaceCachedTable(table, clonedTable);\n }\n\n /**\n * Creates a new columns from the column in the table.\n */\n async addColumns(tableOrName: Table|string, columns: TableColumn[]): Promise<void> {\n for (const column of columns) {\n await this.addColumn(tableOrName, column);\n }\n }\n\n /**\n * Renames column in the given table.\n */\n async renameColumn(tableOrName: Table|string, oldTableColumnOrName: TableColumn|string, newTableColumnOrName: TableColumn|string): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const oldColumn = oldTableColumnOrName instanceof TableColumn ? oldTableColumnOrName : table.columns.find(c => c.name === oldTableColumnOrName);\n if (!oldColumn)\n throw new Error(`Column \"${oldTableColumnOrName}\" was not found in the \"${table.name}\" table.`);\n\n let newColumn: TableColumn|undefined = undefined;\n if (newTableColumnOrName instanceof TableColumn) {\n newColumn = newTableColumnOrName;\n } else {\n newColumn = oldColumn.clone();\n newColumn.name = newTableColumnOrName;\n }\n\n await this.changeColumn(table, oldColumn, newColumn);\n }\n\n /**\n * Changes a column in the table.\n */\n async changeColumn(tableOrName: Table|string, oldTableColumnOrName: TableColumn|string, newColumn: TableColumn): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n let clonedTable = table.clone();\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n\n const oldColumn = oldTableColumnOrName instanceof TableColumn\n ? oldTableColumnOrName\n : table.columns.find(column => column.name === oldTableColumnOrName);\n if (!oldColumn)\n throw new Error(`Column \"${oldTableColumnOrName}\" was not found in the \"${table.name}\" table.`);\n\n if ((newColumn.isGenerated !== oldColumn.isGenerated && newColumn.generationStrategy !== \"uuid\") || newColumn.type !== oldColumn.type || newColumn.length !== oldColumn.length) {\n // SQL Server does not support changing of IDENTITY column, so we must drop column and recreate it again.\n // Also, we recreate column if column type changed\n await this.dropColumn(table, oldColumn);\n await this.addColumn(table, newColumn);\n\n // update cloned table\n clonedTable = table.clone();\n\n } else {\n if (newColumn.name !== oldColumn.name) {\n\n // rename column\n upQueries.push(new Query(`RENAME COLUMN ${this.escapePath(table)}.\"${oldColumn.name}\" TO \"${newColumn.name}\"`));\n downQueries.push(new Query(`RENAME COLUMN ${this.escapePath(table)}.\"${newColumn.name}\" TO \"${oldColumn.name}\"`));\n\n if (oldColumn.isPrimary === true) {\n const primaryColumns = clonedTable.primaryColumns;\n\n // build old primary constraint name\n const columnNames = primaryColumns.map(column => column.name);\n const oldPkName = this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);\n\n // replace old column name with new column name\n columnNames.splice(columnNames.indexOf(oldColumn.name), 1);\n columnNames.push(newColumn.name);\n const columnNamesString = columnNames.map(columnName => `\"${columnName}\"`).join(\", \");\n\n // drop old PK\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(clonedTable)} DROP CONSTRAINT \"${oldPkName}\"`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(clonedTable)} ADD CONSTRAINT \"${oldPkName}\" PRIMARY KEY (${columnNamesString})`));\n\n // build new primary constraint name\n const newPkName = this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);\n\n // create new PK\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(clonedTable)} ADD CONSTRAINT \"${newPkName}\" PRIMARY KEY (${columnNamesString})`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(clonedTable)} DROP CONSTRAINT \"${newPkName}\"`));\n }\n\n // rename index constraints\n clonedTable.findColumnIndices(oldColumn).forEach(index => {\n // build new constraint name\n index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);\n index.columnNames.push(newColumn.name);\n const newIndexName = this.connection.namingStrategy.indexName(clonedTable, index.columnNames, index.where);\n\n // drop old index\n upQueries.push(this.dropIndexSql(clonedTable, index));\n downQueries.push(this.createIndexSql(clonedTable, index));\n\n // replace constraint name\n index.name = newIndexName;\n\n // create new index\n upQueries.push(this.createIndexSql(clonedTable, index));\n downQueries.push(this.dropIndexSql(clonedTable, index));\n });\n\n // rename foreign key constraints\n clonedTable.findColumnForeignKeys(oldColumn).forEach(foreignKey => {\n // build new constraint name\n foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);\n foreignKey.columnNames.push(newColumn.name);\n const newForeignKeyName = this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, foreignKey.referencedTableName, foreignKey.referencedColumnNames);\n\n upQueries.push(this.dropForeignKeySql(clonedTable, foreignKey));\n downQueries.push(this.createForeignKeySql(clonedTable, foreignKey));\n\n // replace constraint name\n foreignKey.name = newForeignKeyName;\n\n // create new FK's\n upQueries.push(this.createForeignKeySql(clonedTable, foreignKey));\n downQueries.push(this.dropForeignKeySql(clonedTable, foreignKey));\n });\n\n // rename check constraints\n clonedTable.findColumnChecks(oldColumn).forEach(check => {\n // build new constraint name\n check.columnNames!.splice(check.columnNames!.indexOf(oldColumn.name), 1);\n check.columnNames!.push(newColumn.name);\n const newCheckName = this.connection.namingStrategy.checkConstraintName(clonedTable, check.expression!);\n\n upQueries.push(this.dropCheckConstraintSql(clonedTable, check));\n downQueries.push(this.createCheckConstraintSql(clonedTable, check));\n\n // replace constraint name\n check.name = newCheckName;\n\n upQueries.push(this.createCheckConstraintSql(clonedTable, check));\n downQueries.push(this.dropCheckConstraintSql(clonedTable, check));\n });\n\n // rename old column in the Table object\n const oldTableColumn = clonedTable.columns.find(column => column.name === oldColumn.name);\n clonedTable.columns[clonedTable.columns.indexOf(oldTableColumn!)].name = newColumn.name;\n oldColumn.name = newColumn.name;\n }\n\n if (this.isColumnChanged(oldColumn, newColumn)) {\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ALTER (${this.buildCreateColumnSql(newColumn)})`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ALTER (${this.buildCreateColumnSql(oldColumn)})`));\n }\n\n if (newColumn.isPrimary !== oldColumn.isPrimary) {\n const primaryColumns = clonedTable.primaryColumns;\n\n // if primary column state changed, we must always drop existed constraint.\n if (primaryColumns.length > 0) {\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(column => column.name));\n const columnNames = primaryColumns.map(column => `\"${column.name}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${pkName}\"`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`));\n }\n\n if (newColumn.isPrimary === true) {\n primaryColumns.push(newColumn);\n // update column in table\n const column = clonedTable.columns.find(column => column.name === newColumn.name);\n column!.isPrimary = true;\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(column => column.name));\n const columnNames = primaryColumns.map(column => `\"${column.name}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${pkName}\"`));\n\n } else {\n const primaryColumn = primaryColumns.find(c => c.name === newColumn.name);\n primaryColumns.splice(primaryColumns.indexOf(primaryColumn!), 1);\n\n // update column in table\n const column = clonedTable.columns.find(column => column.name === newColumn.name);\n column!.isPrimary = false;\n\n // if we have another primary keys, we must recreate constraint.\n if (primaryColumns.length > 0) {\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(column => column.name));\n const columnNames = primaryColumns.map(column => `\"${column.name}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${pkName}\"`));\n }\n }\n }\n\n if (newColumn.isUnique !== oldColumn.isUnique) {\n if (newColumn.isUnique === true) {\n const uniqueIndex = new TableIndex({\n name: this.connection.namingStrategy.indexName(table.name, [newColumn.name]),\n columnNames: [newColumn.name],\n isUnique: true\n });\n clonedTable.indices.push(uniqueIndex);\n clonedTable.uniques.push(new TableUnique({\n name: uniqueIndex.name,\n columnNames: uniqueIndex.columnNames\n }));\n upQueries.push(this.createIndexSql(table, uniqueIndex));\n downQueries.push(this.dropIndexSql(table, uniqueIndex));\n\n } else {\n const uniqueIndex = clonedTable.indices.find(index => {\n return index.columnNames.length === 1 && index.isUnique === true && !!index.columnNames.find(columnName => columnName === newColumn.name);\n });\n clonedTable.indices.splice(clonedTable.indices.indexOf(uniqueIndex!), 1);\n\n const tableUnique = clonedTable.uniques.find(unique => unique.name === uniqueIndex!.name);\n clonedTable.uniques.splice(clonedTable.uniques.indexOf(tableUnique!), 1);\n\n upQueries.push(this.dropIndexSql(table, uniqueIndex!));\n downQueries.push(this.createIndexSql(table, uniqueIndex!));\n }\n }\n\n if (newColumn.default !== oldColumn.default) {\n if (newColumn.default !== null && newColumn.default !== undefined) {\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ALTER (\"${newColumn.name}\" ${this.connection.driver.createFullType(newColumn)} DEFAULT ${newColumn.default})`));\n\n if (oldColumn.default !== null && oldColumn.default !== undefined) {\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ALTER (\"${oldColumn.name}\" ${this.connection.driver.createFullType(oldColumn)} DEFAULT ${oldColumn.default})`));\n } else {\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ALTER (\"${oldColumn.name}\" ${this.connection.driver.createFullType(oldColumn)} DEFAULT NULL)`));\n }\n\n } else if (oldColumn.default !== null && oldColumn.default !== undefined) {\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ALTER (\"${newColumn.name}\" ${this.connection.driver.createFullType(newColumn)} DEFAULT NULL)`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ALTER (\"${oldColumn.name}\" ${this.connection.driver.createFullType(oldColumn)} DEFAULT ${oldColumn.default})`));\n }\n }\n\n await this.executeQueries(upQueries, downQueries);\n this.replaceCachedTable(table, clonedTable);\n }\n }\n\n /**\n * Changes a column in the table.\n */\n async changeColumns(tableOrName: Table|string, changedColumns: { newColumn: TableColumn, oldColumn: TableColumn }[]): Promise<void> {\n for (const {oldColumn, newColumn} of changedColumns) {\n await this.changeColumn(tableOrName, oldColumn, newColumn)\n }\n }\n\n /**\n * Drops column in the table.\n */\n async dropColumn(tableOrName: Table|string, columnOrName: TableColumn|string): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const parsedTableName = this.parseTableName(table);\n const column = columnOrName instanceof TableColumn ? columnOrName : table.findColumnByName(columnOrName);\n if (!column)\n throw new Error(`Column \"${columnOrName}\" was not found in table \"${table.name}\"`);\n\n const clonedTable = table.clone();\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n\n // drop primary key constraint\n if (column.isPrimary) {\n // SAP HANA does not allow to drop PK's which is referenced by foreign keys.\n // To avoid this, we must drop all referential foreign keys and recreate them later\n const referencedForeignKeySql = `SELECT * FROM \"SYS\".\"REFERENTIAL_CONSTRAINTS\" WHERE \"REFERENCED_SCHEMA_NAME\" = ${parsedTableName.schema} AND \"REFERENCED_TABLE_NAME\" = ${parsedTableName.tableName}`;\n const dbForeignKeys: ObjectLiteral[] = await this.query(referencedForeignKeySql);\n let referencedForeignKeys: TableForeignKey[] = [];\n const referencedForeignKeyTableMapping: { tableName: string, fkName: string }[] = [];\n if (dbForeignKeys.length > 0) {\n referencedForeignKeys = dbForeignKeys.map(dbForeignKey => {\n const foreignKeys = dbForeignKeys.filter(dbFk => dbFk[\"CONSTRAINT_NAME\"] === dbForeignKey[\"CONSTRAINT_NAME\"]);\n\n referencedForeignKeyTableMapping.push({ tableName: `${dbForeignKey[\"SCHEMA_NAME\"]}.${dbForeignKey[\"TABLE_NAME\"]}`, fkName: dbForeignKey[\"CONSTRAINT_NAME\"] });\n return new TableForeignKey({\n name: dbForeignKey[\"CONSTRAINT_NAME\"],\n columnNames: foreignKeys.map(dbFk => dbFk[\"COLUMN_NAME\"]),\n referencedTableName: table.name,\n referencedColumnNames: foreignKeys.map(dbFk => dbFk[\"REFERENCED_COLUMN_NAME\"]),\n onDelete: dbForeignKey[\"DELETE_RULE\"] === \"RESTRICT\" ? \"NO ACTION\" : dbForeignKey[\"DELETE_RULE\"],\n onUpdate: dbForeignKey[\"UPDATE_RULE\"] === \"RESTRICT\" ? \"NO ACTION\" : dbForeignKey[\"UPDATE_RULE\"],\n });\n });\n\n // drop referenced foreign keys\n referencedForeignKeys.forEach(foreignKey => {\n const mapping = referencedForeignKeyTableMapping.find(it => it.fkName === foreignKey.name);\n upQueries.push(this.dropForeignKeySql(mapping!.tableName, foreignKey));\n downQueries.push(this.createForeignKeySql(mapping!.tableName, foreignKey));\n });\n }\n\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, clonedTable.primaryColumns.map(column => column.name));\n const columnNames = clonedTable.primaryColumns.map(primaryColumn => `\"${primaryColumn.name}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(clonedTable)} DROP CONSTRAINT \"${pkName}\"`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(clonedTable)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`));\n\n // update column in table\n const tableColumn = clonedTable.findColumnByName(column.name);\n tableColumn!.isPrimary = false;\n\n // if primary key have multiple columns, we must recreate it without dropped column\n if (clonedTable.primaryColumns.length > 0) {\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, clonedTable.primaryColumns.map(column => column.name));\n const columnNames = clonedTable.primaryColumns.map(primaryColumn => `\"${primaryColumn.name}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(clonedTable)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(clonedTable)} DROP CONSTRAINT \"${pkName}\"`));\n }\n\n // restore referenced foreign keys\n referencedForeignKeys.forEach(foreignKey => {\n const mapping = referencedForeignKeyTableMapping.find(it => it.fkName === foreignKey.name);\n upQueries.push(this.createForeignKeySql(mapping!.tableName, foreignKey));\n downQueries.push(this.dropForeignKeySql(mapping!.tableName, foreignKey));\n });\n }\n\n // drop column index\n const columnIndex = clonedTable.indices.find(index => index.columnNames.length === 1 && index.columnNames[0] === column.name);\n if (columnIndex) {\n clonedTable.indices.splice(clonedTable.indices.indexOf(columnIndex), 1);\n upQueries.push(this.dropIndexSql(table, columnIndex));\n downQueries.push(this.createIndexSql(table, columnIndex));\n\n } else if (column.isUnique) {\n // we splice constraints both from table uniques and indices.\n const uniqueName = this.connection.namingStrategy.uniqueConstraintName(table.name, [column.name]);\n const foundUnique = clonedTable.uniques.find(unique => unique.name === uniqueName);\n if (foundUnique) {\n clonedTable.uniques.splice(clonedTable.uniques.indexOf(foundUnique), 1);\n upQueries.push(this.dropIndexSql(table, uniqueName));\n downQueries.push(new Query(`CREATE UNIQUE INDEX \"${uniqueName}\" ON ${this.escapePath(table)} (\"${column.name}\")`));\n }\n\n const indexName = this.connection.namingStrategy.indexName(table.name, [column.name]);\n const foundIndex = clonedTable.indices.find(index => index.name === indexName);\n if (foundIndex) {\n clonedTable.indices.splice(clonedTable.indices.indexOf(foundIndex), 1);\n upQueries.push(this.dropIndexSql(table, indexName));\n downQueries.push(new Query(`CREATE UNIQUE INDEX \"${indexName}\" ON ${this.escapePath(table)} (\"${column.name}\")`));\n }\n }\n\n // drop column check\n const columnCheck = clonedTable.checks.find(check => !!check.columnNames && check.columnNames.length === 1 && check.columnNames[0] === column.name);\n if (columnCheck) {\n clonedTable.checks.splice(clonedTable.checks.indexOf(columnCheck), 1);\n upQueries.push(this.dropCheckConstraintSql(table, columnCheck));\n downQueries.push(this.createCheckConstraintSql(table, columnCheck));\n }\n\n upQueries.push(new Query(this.dropColumnSql(table, column)));\n downQueries.push(new Query(this.addColumnSql(table, column)));\n\n await this.executeQueries(upQueries, downQueries);\n\n clonedTable.removeColumn(column);\n this.replaceCachedTable(table, clonedTable);\n }\n\n /**\n * Drops the columns in the table.\n */\n async dropColumns(tableOrName: Table|string, columns: TableColumn[]): Promise<void> {\n for (const column of columns) {\n await this.dropColumn(tableOrName, column);\n }\n }\n\n /**\n * Creates a new primary key.\n */\n async createPrimaryKey(tableOrName: Table|string, columnNames: string[]): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const clonedTable = table.clone();\n\n const up = this.createPrimaryKeySql(table, columnNames);\n\n // mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.\n clonedTable.columns.forEach(column => {\n if (columnNames.find(columnName => columnName === column.name))\n column.isPrimary = true;\n });\n const down = this.dropPrimaryKeySql(clonedTable);\n\n await this.executeQueries(up, down);\n this.replaceCachedTable(table, clonedTable);\n }\n\n /**\n * Updates composite primary keys.\n */\n async updatePrimaryKeys(tableOrName: Table|string, columns: TableColumn[]): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const parsedTableName = this.parseTableName(table);\n const clonedTable = table.clone();\n const columnNames = columns.map(column => column.name);\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n\n // SAP HANA does not allow to drop PK's which is referenced by foreign keys.\n // To avoid this, we must drop all referential foreign keys and recreate them later\n const referencedForeignKeySql = `SELECT * FROM \"SYS\".\"REFERENTIAL_CONSTRAINTS\" WHERE \"REFERENCED_SCHEMA_NAME\" = ${parsedTableName.schema} AND \"REFERENCED_TABLE_NAME\" = ${parsedTableName.tableName}`;\n const dbForeignKeys: ObjectLiteral[] = await this.query(referencedForeignKeySql);\n let referencedForeignKeys: TableForeignKey[] = [];\n const referencedForeignKeyTableMapping: { tableName: string, fkName: string }[] = [];\n if (dbForeignKeys.length > 0) {\n referencedForeignKeys = dbForeignKeys.map(dbForeignKey => {\n const foreignKeys = dbForeignKeys.filter(dbFk => dbFk[\"CONSTRAINT_NAME\"] === dbForeignKey[\"CONSTRAINT_NAME\"]);\n\n referencedForeignKeyTableMapping.push({ tableName: `${dbForeignKey[\"SCHEMA_NAME\"]}.${dbForeignKey[\"TABLE_NAME\"]}`, fkName: dbForeignKey[\"CONSTRAINT_NAME\"] });\n return new TableForeignKey({\n name: dbForeignKey[\"CONSTRAINT_NAME\"],\n columnNames: foreignKeys.map(dbFk => dbFk[\"COLUMN_NAME\"]),\n referencedTableName: table.name,\n referencedColumnNames: foreignKeys.map(dbFk => dbFk[\"REFERENCED_COLUMN_NAME\"]),\n onDelete: dbForeignKey[\"DELETE_RULE\"] === \"RESTRICT\" ? \"NO ACTION\" : dbForeignKey[\"DELETE_RULE\"],\n onUpdate: dbForeignKey[\"UPDATE_RULE\"] === \"RESTRICT\" ? \"NO ACTION\" : dbForeignKey[\"UPDATE_RULE\"],\n });\n });\n\n // drop referenced foreign keys\n referencedForeignKeys.forEach(foreignKey => {\n const mapping = referencedForeignKeyTableMapping.find(it => it.fkName === foreignKey.name);\n upQueries.push(this.dropForeignKeySql(mapping!.tableName, foreignKey));\n downQueries.push(this.createForeignKeySql(mapping!.tableName, foreignKey));\n });\n }\n\n // if table already have primary columns, we must drop them.\n const primaryColumns = clonedTable.primaryColumns;\n if (primaryColumns.length > 0) {\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(column => column.name));\n const columnNamesString = primaryColumns.map(column => `\"${column.name}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${pkName}\"`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNamesString})`));\n }\n\n // update columns in table.\n clonedTable.columns\n .filter(column => columnNames.indexOf(column.name) !== -1)\n .forEach(column => column.isPrimary = true);\n\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, columnNames);\n const columnNamesString = columnNames.map(columnName => `\"${columnName}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNamesString})`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${pkName}\"`));\n\n // restore referenced foreign keys\n referencedForeignKeys.forEach(foreignKey => {\n const mapping = referencedForeignKeyTableMapping.find(it => it.fkName === foreignKey.name);\n upQueries.push(this.createForeignKeySql(mapping!.tableName, foreignKey));\n downQueries.push(this.dropForeignKeySql(mapping!.tableName, foreignKey));\n });\n\n await this.executeQueries(upQueries, downQueries);\n this.replaceCachedTable(table, clonedTable);\n }\n\n /**\n * Drops a primary key.\n */\n async dropPrimaryKey(tableOrName: Table|string): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const parsedTableName = this.parseTableName(table);\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n\n // SAP HANA does not allow to drop PK's which is referenced by foreign keys.\n // To avoid this, we must drop all referential foreign keys and recreate them later\n const referencedForeignKeySql = `SELECT * FROM \"SYS\".\"REFERENTIAL_CONSTRAINTS\" WHERE \"REFERENCED_SCHEMA_NAME\" = ${parsedTableName.schema} AND \"REFERENCED_TABLE_NAME\" = ${parsedTableName.tableName}`;\n const dbForeignKeys: ObjectLiteral[] = await this.query(referencedForeignKeySql);\n let referencedForeignKeys: TableForeignKey[] = [];\n const referencedForeignKeyTableMapping: { tableName: string, fkName: string }[] = [];\n if (dbForeignKeys.length > 0) {\n referencedForeignKeys = dbForeignKeys.map(dbForeignKey => {\n const foreignKeys = dbForeignKeys.filter(dbFk => dbFk[\"CONSTRAINT_NAME\"] === dbForeignKey[\"CONSTRAINT_NAME\"]);\n\n referencedForeignKeyTableMapping.push({ tableName: `${dbForeignKey[\"SCHEMA_NAME\"]}.${dbForeignKey[\"TABLE_NAME\"]}`, fkName: dbForeignKey[\"CONSTRAINT_NAME\"] });\n return new TableForeignKey({\n name: dbForeignKey[\"CONSTRAINT_NAME\"],\n columnNames: foreignKeys.map(dbFk => dbFk[\"COLUMN_NAME\"]),\n referencedTableName: table.name,\n referencedColumnNames: foreignKeys.map(dbFk => dbFk[\"REFERENCED_COLUMN_NAME\"]),\n onDelete: dbForeignKey[\"DELETE_RULE\"] === \"RESTRICT\" ? \"NO ACTION\" : dbForeignKey[\"DELETE_RULE\"],\n onUpdate: dbForeignKey[\"UPDATE_RULE\"] === \"RESTRICT\" ? \"NO ACTION\" : dbForeignKey[\"UPDATE_RULE\"],\n });\n });\n\n // drop referenced foreign keys\n referencedForeignKeys.forEach(foreignKey => {\n const mapping = referencedForeignKeyTableMapping.find(it => it.fkName === foreignKey.name);\n upQueries.push(this.dropForeignKeySql(mapping!.tableName, foreignKey));\n downQueries.push(this.createForeignKeySql(mapping!.tableName, foreignKey));\n });\n }\n\n upQueries.push(this.dropPrimaryKeySql(table));\n downQueries.push(this.createPrimaryKeySql(table, table.primaryColumns.map(column => column.name)));\n\n // restore referenced foreign keys\n referencedForeignKeys.forEach(foreignKey => {\n const mapping = referencedForeignKeyTableMapping.find(it => it.fkName === foreignKey.name);\n upQueries.push(this.createForeignKeySql(mapping!.tableName, foreignKey));\n downQueries.push(this.dropForeignKeySql(mapping!.tableName, foreignKey));\n });\n\n await this.executeQueries(upQueries, downQueries);\n table.primaryColumns.forEach(column => {\n column.isPrimary = false;\n });\n }\n\n /**\n * Creates a new unique constraint.\n */\n async createUniqueConstraint(tableOrName: Table|string, uniqueConstraint: TableUnique): Promise<void> {\n throw new Error(`SAP HANA does not support unique constraints. Use unique index instead.`);\n }\n\n /**\n * Creates a new unique constraints.\n */\n async createUniqueConstraints(tableOrName: Table|string, uniqueConstraints: TableUnique[]): Promise<void> {\n throw new Error(`SAP HANA does not support unique constraints. Use unique index instead.`);\n }\n\n /**\n * Drops unique constraint.\n */\n async dropUniqueConstraint(tableOrName: Table|string, uniqueOrName: TableUnique|string): Promise<void> {\n throw new Error(`SAP HANA does not support unique constraints. Use unique index instead.`);\n }\n\n /**\n * Drops an unique constraints.\n */\n async dropUniqueConstraints(tableOrName: Table|string, uniqueConstraints: TableUnique[]): Promise<void> {\n throw new Error(`SAP HANA does not support unique constraints. Use unique index instead.`);\n }\n\n /**\n * Creates a new check constraint.\n */\n async createCheckConstraint(tableOrName: Table|string, checkConstraint: TableCheck): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n\n // new unique constraint may be passed without name. In this case we generate unique name manually.\n if (!checkConstraint.name)\n checkConstraint.name = this.connection.namingStrategy.checkConstraintName(table.name, checkConstraint.expression!);\n\n const up = this.createCheckConstraintSql(table, checkConstraint);\n const down = this.dropCheckConstraintSql(table, checkConstraint);\n await this.executeQueries(up, down);\n table.addCheckConstraint(checkConstraint);\n }\n\n /**\n * Creates a new check constraints.\n */\n async createCheckConstraints(tableOrName: Table|string, checkConstraints: TableCheck[]): Promise<void> {\n const promises = checkConstraints.map(checkConstraint => this.createCheckConstraint(tableOrName, checkConstraint));\n await Promise.all(promises);\n }\n\n /**\n * Drops check constraint.\n */\n async dropCheckConstraint(tableOrName: Table|string, checkOrName: TableCheck|string): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const checkConstraint = checkOrName instanceof TableCheck ? checkOrName : table.checks.find(c => c.name === checkOrName);\n if (!checkConstraint)\n throw new Error(`Supplied check constraint was not found in table ${table.name}`);\n\n const up = this.dropCheckConstraintSql(table, checkConstraint);\n const down = this.createCheckConstraintSql(table, checkConstraint);\n await this.executeQueries(up, down);\n table.removeCheckConstraint(checkConstraint);\n }\n\n /**\n * Drops check constraints.\n */\n async dropCheckConstraints(tableOrName: Table|string, checkConstraints: TableCheck[]): Promise<void> {\n const promises = checkConstraints.map(checkConstraint => this.dropCheckConstraint(tableOrName, checkConstraint));\n await Promise.all(promises);\n }\n\n /**\n * Creates a new exclusion constraint.\n */\n async createExclusionConstraint(tableOrName: Table|string, exclusionConstraint: TableExclusion): Promise<void> {\n throw new Error(`SAP HANA does not support exclusion constraints.`);\n }\n\n /**\n * Creates a new exclusion constraints.\n */\n async createExclusionConstraints(tableOrName: Table|string, exclusionConstraints: TableExclusion[]): Promise<void> {\n throw new Error(`SAP HANA does not support exclusion constraints.`);\n }\n\n /**\n * Drops exclusion constraint.\n */\n async dropExclusionConstraint(tableOrName: Table|string, exclusionOrName: TableExclusion|string): Promise<void> {\n throw new Error(`SAP HANA does not support exclusion constraints.`);\n }\n\n /**\n * Drops exclusion constraints.\n */\n async dropExclusionConstraints(tableOrName: Table|string, exclusionConstraints: TableExclusion[]): Promise<void> {\n throw new Error(`SAP HANA does not support exclusion constraints.`);\n }\n\n /**\n * Creates a new foreign key.\n */\n async createForeignKey(tableOrName: Table|string, foreignKey: TableForeignKey): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n\n // new FK may be passed without name. In this case we generate FK name manually.\n if (!foreignKey.name)\n foreignKey.name = this.connection.namingStrategy.foreignKeyName(table.name, foreignKey.columnNames, foreignKey.referencedTableName, foreignKey.referencedColumnNames);\n\n const up = this.createForeignKeySql(table, foreignKey);\n const down = this.dropForeignKeySql(table, foreignKey);\n await this.executeQueries(up, down);\n table.addForeignKey(foreignKey);\n }\n\n /**\n * Creates a new foreign keys.\n */\n async createForeignKeys(tableOrName: Table|string, foreignKeys: TableForeignKey[]): Promise<void> {\n const promises = foreignKeys.map(foreignKey => this.createForeignKey(tableOrName, foreignKey));\n await Promise.all(promises);\n }\n\n /**\n * Drops a foreign key from the table.\n */\n async dropForeignKey(tableOrName: Table|string, foreignKeyOrName: TableForeignKey|string): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const foreignKey = foreignKeyOrName instanceof TableForeignKey ? foreignKeyOrName : table.foreignKeys.find(fk => fk.name === foreignKeyOrName);\n if (!foreignKey)\n throw new Error(`Supplied foreign key was not found in table ${table.name}`);\n\n const up = this.dropForeignKeySql(table, foreignKey);\n const down = this.createForeignKeySql(table, foreignKey);\n await this.executeQueries(up, down);\n table.removeForeignKey(foreignKey);\n }\n\n /**\n * Drops a foreign keys from the table.\n */\n async dropForeignKeys(tableOrName: Table|string, foreignKeys: TableForeignKey[]): Promise<void> {\n const promises = foreignKeys.map(foreignKey => this.dropForeignKey(tableOrName, foreignKey));\n await Promise.all(promises);\n }\n\n /**\n * Creates a new index.\n */\n async createIndex(tableOrName: Table|string, index: TableIndex): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name)\n index.name = this.connection.namingStrategy.indexName(table.name, index.columnNames, index.where);\n\n const up = this.createIndexSql(table, index);\n const down = this.dropIndexSql(table, index);\n await this.executeQueries(up, down);\n table.addIndex(index);\n }\n\n /**\n * Creates a new indices\n */\n async createIndices(tableOrName: Table|string, indices: TableIndex[]): Promise<void> {\n const promises = indices.map(index => this.createIndex(tableOrName, index));\n await Promise.all(promises);\n }\n\n /**\n * Drops an index.\n */\n async dropIndex(tableOrName: Table|string, indexOrName: TableIndex|string): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const index = indexOrName instanceof TableIndex ? indexOrName : table.indices.find(i => i.name === indexOrName);\n if (!index)\n throw new Error(`Supplied index was not found in table ${table.name}`);\n\n const up = this.dropIndexSql(table, index);\n const down = this.createIndexSql(table, index);\n await this.executeQueries(up, down);\n table.removeIndex(index);\n }\n\n /**\n * Drops an indices from the table.\n */\n async dropIndices(tableOrName: Table|string, indices: TableIndex[]): Promise<void> {\n const promises = indices.map(index => this.dropIndex(tableOrName, index));\n await Promise.all(promises);\n }\n\n /**\n * Clears all table contents.\n * Note: this operation uses SQL's TRUNCATE query which cannot be reverted in transactions.\n */\n async clearTable(tablePath: string): Promise<void> {\n await this.query(`TRUNCATE TABLE ${this.escapePath(tablePath)}`);\n }\n\n /**\n * Removes all tables from the currently connected database.\n */\n async clearDatabase(): Promise<void> {\n const schemas: string[] = [];\n this.connection.entityMetadatas\n .filter(metadata => metadata.schema)\n .forEach(metadata => {\n const isSchemaExist = !!schemas.find(schema => schema === metadata.schema);\n if (!isSchemaExist)\n schemas.push(metadata.schema!);\n });\n\n schemas.push(this.driver.options.schema || \"current_schema\");\n const schemaNamesString = schemas.map(name => {\n return name === \"current_schema\" ? name : \"'\" + name + \"'\";\n }).join(\", \");\n\n await this.startTransaction();\n try {\n // const selectViewDropsQuery = `SELECT 'DROP VIEW IF EXISTS \"' || schemaname || '\".\"' || viewname || '\" CASCADE;' as \"query\" ` +\n // `FROM \"pg_views\" WHERE \"schemaname\" IN (${schemaNamesString}) AND \"viewname\" NOT IN ('geography_columns', 'geometry_columns', 'raster_columns', 'raster_overviews')`;\n // const dropViewQueries: ObjectLiteral[] = await this.query(selectViewDropsQuery);\n // await Promise.all(dropViewQueries.map(q => this.query(q[\"query\"])));\n\n // ignore spatial_ref_sys; it's a special table supporting PostGIS\n const selectTableDropsQuery = `SELECT 'DROP TABLE \"' || schema_name || '\".\"' || table_name || '\" CASCADE;' as \"query\" FROM \"SYS\".\"TABLES\" WHERE \"SCHEMA_NAME\" IN (${schemaNamesString}) AND \"TABLE_NAME\" NOT IN ('SYS_AFL_GENERATOR_PARAMETERS') AND \"IS_COLUMN_TABLE\" = 'TRUE'`;\n const dropTableQueries: ObjectLiteral[] = await this.query(selectTableDropsQuery);\n await Promise.all(dropTableQueries.map(q => this.query(q[\"query\"])));\n\n await this.commitTransaction();\n\n } catch (error) {\n try { // we throw original error even if rollback thrown an error\n await this.rollbackTransaction();\n } catch (rollbackError) { }\n throw error;\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Return current database.\n */\n protected async getCurrentDatabase(): Promise<string> {\n const currentDBQuery = await this.query(`SELECT \"VALUE\" AS \"db_name\" FROM \"SYS\".\"M_SYSTEM_OVERVIEW\" WHERE \"SECTION\" = 'System' and \"NAME\" = 'Instance ID'`);\n return currentDBQuery[0][\"db_name\"];\n }\n\n /**\n * Return current schema.\n */\n protected async getCurrentSchema(): Promise<string> {\n const currentSchemaQuery = await this.query(`SELECT CURRENT_SCHEMA AS \"schema_name\" FROM \"SYS\".\"DUMMY\"`);\n return currentSchemaQuery[0][\"schema_name\"];\n }\n\n protected async loadViews(viewNames: string[]): Promise<View[]> {\n const hasTable = await this.hasTable(this.getTypeormMetadataTableName());\n if (!hasTable)\n return Promise.resolve([]);\n\n const currentSchema = await this.getCurrentSchema();\n\n const viewsCondition = viewNames.map(viewName => {\n let [schema, name] = viewName.split(\".\");\n if (!name) {\n name = schema;\n schema = this.driver.options.schema || currentSchema;\n }\n return `(\"t\".\"schema\" = '${schema}' AND \"t\".\"name\" = '${name}')`;\n }).join(\" OR \");\n\n const query = `SELECT \"t\".* FROM ${this.escapePath(this.getTypeormMetadataTableName())} \"t\" WHERE \"t\".\"type\" = 'VIEW' ${viewsCondition ? `AND (${viewsCondition})` : \"\"}`;\n const dbViews = await this.query(query);\n return dbViews.map((dbView: any) => {\n const view = new View();\n const schema = dbView[\"schema\"] === currentSchema && !this.driver.options.schema ? undefined : dbView[\"schema\"];\n view.name = this.driver.buildTableName(dbView[\"name\"], schema);\n view.expression = dbView[\"value\"];\n return view;\n });\n }\n\n /**\n * Loads all tables (with given names) from the database and creates a Table from them.\n */\n protected async loadTables(tableNames: string[]): Promise<Table[]> {\n\n // if no tables given then no need to proceed\n if (!tableNames || !tableNames.length)\n return [];\n\n const currentSchema = await this.getCurrentSchema();\n const tablesCondition = tableNames.map(tableName => {\n let [schema, name] = tableName.split(\".\");\n if (!name) {\n name = schema;\n schema = this.driver.options.schema || currentSchema;\n }\n return `(\"SCHEMA_NAME\" = '${schema}' AND \"TABLE_NAME\" = '${name}')`;\n }).join(\" OR \");\n const tablesSql = `SELECT * FROM \"SYS\".\"TABLES\" WHERE ` + tablesCondition;\n const columnsSql = `SELECT * FROM \"SYS\".\"TABLE_COLUMNS\" WHERE ` + tablesCondition + ` ORDER BY \"POSITION\"`;\n\n const constraintsCondition = tableNames.map(tableName => {\n let [schema, name] = tableName.split(\".\");\n if (!name) {\n name = schema;\n schema = this.driver.options.schema || currentSchema;\n }\n return `(\"SCHEMA_NAME\" = '${schema}' AND \"TABLE_NAME\" = '${name}')`;\n }).join(\" OR \");\n\n const constraintsSql = `SELECT * FROM \"SYS\".\"CONSTRAINTS\" WHERE (${constraintsCondition}) ORDER BY \"POSITION\"`;\n\n const indicesCondition = tableNames.map(tableName => {\n let [schema, name] = tableName.split(\".\");\n if (!name) {\n name = schema;\n schema = this.driver.options.schema || currentSchema;\n }\n return `(\"I\".\"SCHEMA_NAME\" = '${schema}' AND \"I\".\"TABLE_NAME\" = '${name}')`;\n }).join(\" OR \");\n // excluding primary key and autogenerated fulltext indices\n const indicesSql = `SELECT \"I\".\"INDEX_TYPE\", \"I\".\"SCHEMA_NAME\", \"I\".\"TABLE_NAME\", \"I\".\"INDEX_NAME\", \"IC\".\"COLUMN_NAME\", \"I\".\"CONSTRAINT\" ` +\n `FROM \"SYS\".\"INDEXES\" \"I\" INNER JOIN \"SYS\".\"INDEX_COLUMNS\" \"IC\" ON \"IC\".\"INDEX_OID\" = \"I\".\"INDEX_OID\" ` +\n `WHERE (${indicesCondition}) AND (\"I\".\"CONSTRAINT\" IS NULL OR \"I\".\"CONSTRAINT\" != 'PRIMARY KEY') AND \"I\".\"INDEX_NAME\" NOT LIKE '%_SYS_FULLTEXT_%' ORDER BY \"IC\".\"POSITION\"`;\n\n const foreignKeysCondition = tableNames.map(tableName => {\n let [schema, name] = tableName.split(\".\");\n if (!name) {\n name = schema;\n schema = this.driver.options.schema || currentSchema;\n }\n return `(\"SCHEMA_NAME\" = '${schema}' AND \"TABLE_NAME\" = '${name}')`;\n }).join(\" OR \");\n const foreignKeysSql = `SELECT * FROM \"SYS\".\"REFERENTIAL_CONSTRAINTS\" WHERE (${foreignKeysCondition}) ORDER BY \"POSITION\"`;\n const [dbTables, dbColumns, dbConstraints, dbIndices, dbForeignKeys]: ObjectLiteral[][] = await Promise.all([\n this.query(tablesSql),\n this.query(columnsSql),\n this.query(constraintsSql),\n this.query(indicesSql),\n this.query(foreignKeysSql),\n ]);\n\n // if tables were not found in the db, no need to proceed\n if (!dbTables.length)\n return [];\n\n // create tables for loaded tables\n return Promise.all(dbTables.map(async dbTable => {\n const table = new Table();\n\n // We do not need to join schema name, when database is by default.\n // In this case we need local variable `tableFullName` for below comparision.\n const schema = dbTable[\"SCHEMA_NAME\"] === currentSchema && !this.driver.options.schema ? undefined : dbTable[\"SCHEMA_NAME\"];\n table.name = this.driver.buildTableName(dbTable[\"TABLE_NAME\"], schema);\n const tableFullName = this.driver.buildTableName(dbTable[\"TABLE_NAME\"], dbTable[\"SCHEMA_NAME\"]);\n\n // create columns from the loaded columns\n table.columns = await Promise.all(dbColumns\n .filter(dbColumn => this.driver.buildTableName(dbColumn[\"TABLE_NAME\"], dbColumn[\"SCHEMA_NAME\"]) === tableFullName)\n .map(async dbColumn => {\n\n const columnConstraints = dbConstraints.filter(dbConstraint => {\n return this.driver.buildTableName(dbConstraint[\"TABLE_NAME\"], dbConstraint[\"SCHEMA_NAME\"]) === tableFullName && dbConstraint[\"COLUMN_NAME\"] === dbColumn[\"COLUMN_NAME\"];\n });\n\n const columnUniqueIndex = dbIndices.find(dbIndex => {\n const indexTableFullName = this.driver.buildTableName(dbIndex[\"TABLE_NAME\"], dbIndex[\"SCHEMA_NAME\"]);\n if (indexTableFullName !== tableFullName) {\n return false;\n }\n\n // Index is not for this column\n if (dbIndex[\"COLUMN_NAME\"] !== dbColumn[\"COLUMN_NAME\"]) {\n return false;\n }\n\n return dbIndex[\"CONSTRAINT\"] && dbIndex[\"CONSTRAINT\"].indexOf(\"UNIQUE\") !== -1;\n });\n\n const tableMetadata = this.connection.entityMetadatas.find(metadata => metadata.tablePath === table.name);\n const hasIgnoredIndex = columnUniqueIndex && tableMetadata && tableMetadata.indices\n .some(index => index.name === columnUniqueIndex[\"INDEX_NAME\"] && index.synchronize === false);\n\n const isConstraintComposite = columnUniqueIndex\n ? !!dbIndices.find(dbIndex => dbIndex[\"INDEX_NAME\"] === columnUniqueIndex[\"INDEX_NAME\"] && dbIndex[\"COLUMN_NAME\"] !== dbColumn[\"COLUMN_NAME\"])\n : false;\n\n const tableColumn = new TableColumn();\n tableColumn.name = dbColumn[\"COLUMN_NAME\"];\n tableColumn.type = dbColumn[\"DATA_TYPE_NAME\"].toLowerCase();\n\n if (tableColumn.type === \"dec\" || tableColumn.type === \"decimal\") {\n // If one of these properties was set, and another was not, Postgres sets '0' in to unspecified property\n // we set 'undefined' in to unspecified property to avoid changing column on sync\n if (dbColumn[\"LENGTH\"] !== null && !this.isDefaultColumnPrecision(table, tableColumn, dbColumn[\"LENGTH\"])) {\n tableColumn.precision = dbColumn[\"LENGTH\"];\n } else if (dbColumn[\"SCALE\"] !== null && !this.isDefaultColumnScale(table, tableColumn, dbColumn[\"SCALE\"])) {\n tableColumn.precision = undefined;\n }\n if (dbColumn[\"SCALE\"] !== null && !this.isDefaultColumnScale(table, tableColumn, dbColumn[\"SCALE\"])) {\n tableColumn.scale = dbColumn[\"SCALE\"];\n } else if (dbColumn[\"LENGTH\"] !== null && !this.isDefaultColumnPrecision(table, tableColumn, dbColumn[\"LENGTH\"])) {\n tableColumn.scale = undefined;\n }\n }\n\n if (dbColumn[\"DATA_TYPE_NAME\"].toLowerCase() === \"array\") {\n tableColumn.isArray = true;\n tableColumn.type = dbColumn[\"CS_DATA_TYPE_NAME\"].toLowerCase();\n }\n\n // check only columns that have length property\n if (this.driver.withLengthColumnTypes.indexOf(tableColumn.type as ColumnType) !== -1 && dbColumn[\"LENGTH\"]) {\n const length = dbColumn[\"LENGTH\"].toString();\n tableColumn.length = !this.isDefaultColumnLength(table, tableColumn, length) ? length : \"\";\n }\n tableColumn.isUnique = !!columnUniqueIndex && !hasIgnoredIndex && !isConstraintComposite;\n tableColumn.isNullable = dbColumn[\"IS_NULLABLE\"] === \"TRUE\";\n tableColumn.isPrimary = !!columnConstraints.find(constraint => constraint[\"IS_PRIMARY_KEY\"] === \"TRUE\");\n tableColumn.isGenerated = dbColumn[\"GENERATION_TYPE\"] === \"ALWAYS AS IDENTITY\";\n if (tableColumn.isGenerated)\n tableColumn.generationStrategy = \"increment\";\n\n if (dbColumn[\"DEFAULT_VALUE\"] === null\n || dbColumn[\"DEFAULT_VALUE\"] === undefined) {\n tableColumn.default = undefined;\n\n } else {\n if (tableColumn.type === \"char\" || tableColumn.type === \"nchar\" || tableColumn.type === \"varchar\" ||\n tableColumn.type === \"nvarchar\" || tableColumn.type === \"alphanum\" || tableColumn.type === \"shorttext\") {\n tableColumn.default = `'${dbColumn[\"DEFAULT_VALUE\"]}'`;\n } else if (tableColumn.type === \"boolean\") {\n tableColumn.default = dbColumn[\"DEFAULT_VALUE\"] === \"1\" ? \"true\" : \"false\";\n } else {\n tableColumn.default = dbColumn[\"DEFAULT_VALUE\"];\n }\n }\n tableColumn.comment = \"\"; // dbColumn[\"COLUMN_COMMENT\"];\n if (dbColumn[\"character_set_name\"])\n tableColumn.charset = dbColumn[\"character_set_name\"];\n if (dbColumn[\"collation_name\"])\n tableColumn.collation = dbColumn[\"collation_name\"];\n return tableColumn;\n }));\n\n // find check constraints of table, group them by constraint name and build TableCheck.\n const tableCheckConstraints = OrmUtils.uniq(dbConstraints.filter(dbConstraint => {\n return this.driver.buildTableName(dbConstraint[\"TABLE_NAME\"], dbConstraint[\"SCHEMA_NAME\"]) === tableFullName\n && dbConstraint[\"CHECK_CONDITION\"] !== null && dbConstraint[\"CHECK_CONDITION\"] !== undefined;\n }), dbConstraint => dbConstraint[\"CONSTRAINT_NAME\"]);\n\n table.checks = tableCheckConstraints.map(constraint => {\n const checks = dbConstraints.filter(dbC => dbC[\"CONSTRAINT_NAME\"] === constraint[\"CONSTRAINT_NAME\"]);\n return new TableCheck({\n name: constraint[\"CONSTRAINT_NAME\"],\n columnNames: checks.map(c => c[\"COLUMN_NAME\"]),\n expression: constraint[\"CHECK_CONDITION\"],\n });\n });\n\n // find foreign key constraints of table, group them by constraint name and build TableForeignKey.\n const tableForeignKeyConstraints = OrmUtils.uniq(dbForeignKeys.filter(dbForeignKey => {\n return this.driver.buildTableName(dbForeignKey[\"TABLE_NAME\"], dbForeignKey[\"SCHEMA_NAME\"]) === tableFullName;\n }), dbForeignKey => dbForeignKey[\"CONSTRAINT_NAME\"]);\n\n table.foreignKeys = tableForeignKeyConstraints.map(dbForeignKey => {\n const foreignKeys = dbForeignKeys.filter(dbFk => dbFk[\"CONSTRAINT_NAME\"] === dbForeignKey[\"CONSTRAINT_NAME\"]);\n\n // if referenced table located in currently used schema, we don't need to concat schema name to table name.\n const schema = dbForeignKey[\"REFERENCED_SCHEMA_NAME\"] === currentSchema ? undefined : dbForeignKey[\"REFERENCED_SCHEMA_NAME\"];\n const referencedTableName = this.driver.buildTableName(dbForeignKey[\"REFERENCED_TABLE_NAME\"], schema);\n\n return new TableForeignKey({\n name: dbForeignKey[\"CONSTRAINT_NAME\"],\n columnNames: foreignKeys.map(dbFk => dbFk[\"COLUMN_NAME\"]),\n referencedTableName: referencedTableName,\n referencedColumnNames: foreignKeys.map(dbFk => dbFk[\"REFERENCED_COLUMN_NAME\"]),\n onDelete: dbForeignKey[\"DELETE_RULE\"] === \"RESTRICT\" ? \"NO ACTION\" : dbForeignKey[\"DELETE_RULE\"],\n onUpdate: dbForeignKey[\"UPDATE_RULE\"] === \"RESTRICT\" ? \"NO ACTION\" : dbForeignKey[\"UPDATE_RULE\"],\n });\n });\n\n // find index constraints of table, group them by constraint name and build TableIndex.\n const tableIndexConstraints = OrmUtils.uniq(dbIndices.filter(dbIndex => {\n return this.driver.buildTableName(dbIndex[\"TABLE_NAME\"], dbIndex[\"SCHEMA_NAME\"]) === tableFullName;\n }), dbIndex => dbIndex[\"INDEX_NAME\"]);\n\n table.indices = tableIndexConstraints.map(constraint => {\n const indices = dbIndices.filter(index => {\n return index[\"SCHEMA_NAME\"] === constraint[\"SCHEMA_NAME\"]\n && index[\"TABLE_NAME\"] === constraint[\"TABLE_NAME\"]\n && index[\"INDEX_NAME\"] === constraint[\"INDEX_NAME\"];\n });\n return new TableIndex(<TableIndexOptions>{\n table: table,\n name: constraint[\"INDEX_NAME\"],\n columnNames: indices.map(i => i[\"COLUMN_NAME\"]),\n isUnique: constraint[\"CONSTRAINT\"] && constraint[\"CONSTRAINT\"].indexOf(\"UNIQUE\") !== -1,\n isFulltext: constraint[\"INDEX_TYPE\"] === \"FULLTEXT\"\n });\n });\n\n return table;\n }));\n }\n\n /**\n * Builds and returns SQL for create table.\n */\n protected createTableSql(table: Table, createForeignKeys?: boolean): Query {\n const columnDefinitions = table.columns.map(column => this.buildCreateColumnSql(column)).join(\", \");\n let sql = `CREATE TABLE ${this.escapePath(table)} (${columnDefinitions}`;\n\n // we create unique indexes instead of unique constraints, because SAP HANA does not have unique constraints.\n // if we mark column as Unique, it means that we create UNIQUE INDEX.\n table.columns\n .filter(column => column.isUnique)\n .forEach(column => {\n const isUniqueIndexExist = table.indices.some(index => {\n return index.columnNames.length === 1 && !!index.isUnique && index.columnNames.indexOf(column.name) !== -1;\n });\n const isUniqueConstraintExist = table.uniques.some(unique => {\n return unique.columnNames.length === 1 && unique.columnNames.indexOf(column.name) !== -1;\n });\n if (!isUniqueIndexExist && !isUniqueConstraintExist)\n table.indices.push(new TableIndex({\n name: this.connection.namingStrategy.uniqueConstraintName(table.name, [column.name]),\n columnNames: [column.name],\n isUnique: true\n }));\n });\n\n // as SAP HANA does not have unique constraints, we must create table indices from table uniques and mark them as unique.\n if (table.uniques.length > 0) {\n table.uniques.forEach(unique => {\n const uniqueExist = table.indices.some(index => index.name === unique.name);\n if (!uniqueExist) {\n table.indices.push(new TableIndex({\n name: unique.name,\n columnNames: unique.columnNames,\n isUnique: true\n }));\n }\n });\n }\n\n if (table.checks.length > 0) {\n const checksSql = table.checks.map(check => {\n const checkName = check.name ? check.name : this.connection.namingStrategy.checkConstraintName(table.name, check.expression!);\n return `CONSTRAINT \"${checkName}\" CHECK (${check.expression})`;\n }).join(\", \");\n\n sql += `, ${checksSql}`;\n }\n\n if (table.foreignKeys.length > 0 && createForeignKeys) {\n const foreignKeysSql = table.foreignKeys.map(fk => {\n const columnNames = fk.columnNames.map(columnName => `\"${columnName}\"`).join(\", \");\n if (!fk.name)\n fk.name = this.connection.namingStrategy.foreignKeyName(table.name, fk.columnNames, fk.referencedTableName, fk.referencedColumnNames);\n const referencedColumnNames = fk.referencedColumnNames.map(columnName => `\"${columnName}\"`).join(\", \");\n\n let constraint = `CONSTRAINT \"${fk.name}\" FOREIGN KEY (${columnNames}) REFERENCES ${this.escapePath(fk.referencedTableName)} (${referencedColumnNames})`;\n // SAP HANA does not have \"NO ACTION\" option for FK's\n if (fk.onDelete) {\n const onDelete = fk.onDelete === \"NO ACTION\" ? \"RESTRICT\" : fk.onDelete;\n constraint += ` ON DELETE ${onDelete}`;\n }\n if (fk.onUpdate) {\n const onUpdate = fk.onUpdate === \"NO ACTION\" ? \"RESTRICT\" : fk.onUpdate;\n constraint += ` ON UPDATE ${onUpdate}`;\n }\n\n return constraint;\n }).join(\", \");\n\n sql += `, ${foreignKeysSql}`;\n }\n\n const primaryColumns = table.columns.filter(column => column.isPrimary);\n if (primaryColumns.length > 0) {\n const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table.name, primaryColumns.map(column => column.name));\n const columnNames = primaryColumns.map(column => `\"${column.name}\"`).join(\", \");\n sql += `, CONSTRAINT \"${primaryKeyName}\" PRIMARY KEY (${columnNames})`;\n }\n\n sql += `)`;\n\n return new Query(sql);\n }\n\n /**\n * Builds drop table sql.\n */\n protected dropTableSql(tableOrName: Table|string, ifExist?: boolean): Query {\n const query = ifExist ? `DROP TABLE IF EXISTS ${this.escapePath(tableOrName)}` : `DROP TABLE ${this.escapePath(tableOrName)}`;\n return new Query(query);\n }\n\n protected createViewSql(view: View): Query {\n if (typeof view.expression === \"string\") {\n return new Query(`CREATE VIEW ${this.escapePath(view)} AS ${view.expression}`);\n } else {\n return new Query(`CREATE VIEW ${this.escapePath(view)} AS ${view.expression(this.connection).getQuery()}`);\n }\n }\n\n protected async insertViewDefinitionSql(view: View): Promise<Query> {\n const currentSchema = await this.getCurrentSchema();\n const splittedName = view.name.split(\".\");\n let schema = this.driver.options.schema || currentSchema;\n let name = view.name;\n if (splittedName.length === 2) {\n schema = splittedName[0];\n name = splittedName[1];\n }\n\n const expression = typeof view.expression === \"string\" ? view.expression.trim() : view.expression(this.connection).getQuery();\n const [query, parameters] = this.connection.createQueryBuilder()\n .insert()\n .into(this.getTypeormMetadataTableName())\n .values({ type: \"VIEW\", schema: schema, name: name, value: expression })\n .getQueryAndParameters();\n\n return new Query(query, parameters);\n }\n\n /**\n * Builds drop view sql.\n */\n protected dropViewSql(viewOrPath: View|string): Query {\n return new Query(`DROP VIEW ${this.escapePath(viewOrPath)}`);\n }\n\n /**\n * Builds remove view sql.\n */\n protected async deleteViewDefinitionSql(viewOrPath: View|string): Promise<Query> {\n const currentSchema = await this.getCurrentSchema();\n const viewName = viewOrPath instanceof View ? viewOrPath.name : viewOrPath;\n const splittedName = viewName.split(\".\");\n let schema = this.driver.options.schema || currentSchema;\n let name = viewName;\n if (splittedName.length === 2) {\n schema = splittedName[0];\n name = splittedName[1];\n }\n\n const qb = this.connection.createQueryBuilder();\n const [query, parameters] = qb.delete()\n .from(this.getTypeormMetadataTableName())\n .where(`${qb.escape(\"type\")} = 'VIEW'`)\n .andWhere(`${qb.escape(\"schema\")} = :schema`, { schema })\n .andWhere(`${qb.escape(\"name\")} = :name`, { name })\n .getQueryAndParameters();\n\n return new Query(query, parameters);\n }\n\n protected addColumnSql(table: Table, column: TableColumn): string {\n return `ALTER TABLE ${this.escapePath(table)} ADD (${this.buildCreateColumnSql(column)})`;\n }\n\n protected dropColumnSql(table: Table, column: TableColumn): string {\n return `ALTER TABLE ${this.escapePath(table)} DROP (\"${column.name}\")`;\n }\n\n /**\n * Builds create index sql.\n */\n protected createIndexSql(table: Table, index: TableIndex): Query {\n const columns = index.columnNames.map(columnName => `\"${columnName}\"`).join(\", \");\n let indexType = \"\";\n if (index.isUnique) {\n indexType += \"UNIQUE \";\n }\n if (index.isFulltext) {\n indexType += \"FULLTEXT \";\n }\n\n return new Query(`CREATE ${indexType}INDEX \"${index.name}\" ON ${this.escapePath(table)} (${columns}) ${index.where ? \"WHERE \" + index.where : \"\"}`);\n }\n\n /**\n * Builds drop index sql.\n */\n protected dropIndexSql(table: Table, indexOrName: TableIndex|string): Query {\n let indexName = indexOrName instanceof TableIndex ? indexOrName.name : indexOrName;\n const parsedTableName = this.parseTableName(table);\n if (parsedTableName.schema === \"current_schema\") {\n return new Query(`DROP INDEX \"${indexName}\"`);\n } else {\n return new Query(`DROP INDEX \"${parsedTableName.schema.replace(/'/g, \"\")}\".\"${indexName}\"`);\n }\n }\n\n /**\n * Builds create primary key sql.\n */\n protected createPrimaryKeySql(table: Table, columnNames: string[]): Query {\n const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table.name, columnNames);\n const columnNamesString = columnNames.map(columnName => `\"${columnName}\"`).join(\", \");\n return new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${primaryKeyName}\" PRIMARY KEY (${columnNamesString})`);\n }\n\n /**\n * Builds drop primary key sql.\n */\n protected dropPrimaryKeySql(table: Table): Query {\n const columnNames = table.primaryColumns.map(column => column.name);\n const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table.name, columnNames);\n return new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${primaryKeyName}\"`);\n }\n\n /**\n * Builds create check constraint sql.\n */\n protected createCheckConstraintSql(table: Table, checkConstraint: TableCheck): Query {\n return new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${checkConstraint.name}\" CHECK (${checkConstraint.expression})`);\n }\n\n /**\n * Builds drop check constraint sql.\n */\n protected dropCheckConstraintSql(table: Table, checkOrName: TableCheck|string): Query {\n const checkName = checkOrName instanceof TableCheck ? checkOrName.name : checkOrName;\n return new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${checkName}\"`);\n }\n\n /**\n * Builds create foreign key sql.\n */\n protected createForeignKeySql(tableOrName: Table|string, foreignKey: TableForeignKey): Query {\n const columnNames = foreignKey.columnNames.map(column => `\"` + column + `\"`).join(\", \");\n const referencedColumnNames = foreignKey.referencedColumnNames.map(column => `\"` + column + `\"`).join(\",\");\n let sql = `ALTER TABLE ${this.escapePath(tableOrName)} ADD CONSTRAINT \"${foreignKey.name}\" FOREIGN KEY (${columnNames}) ` +\n `REFERENCES ${this.escapePath(foreignKey.referencedTableName)}(${referencedColumnNames})`;\n\n // SAP HANA does not have \"NO ACTION\" option for FK's\n if (foreignKey.onDelete) {\n const onDelete = foreignKey.onDelete === \"NO ACTION\" ? \"RESTRICT\" : foreignKey.onDelete;\n sql += ` ON DELETE ${onDelete}`;\n }\n if (foreignKey.onUpdate) {\n const onUpdate = foreignKey.onUpdate === \"NO ACTION\" ? \"RESTRICT\" : foreignKey.onUpdate;\n sql += ` ON UPDATE ${onUpdate}`;\n }\n\n return new Query(sql);\n }\n\n /**\n * Builds drop foreign key sql.\n */\n protected dropForeignKeySql(tableOrName: Table|string, foreignKeyOrName: TableForeignKey|string): Query {\n const foreignKeyName = foreignKeyOrName instanceof TableForeignKey ? foreignKeyOrName.name : foreignKeyOrName;\n return new Query(`ALTER TABLE ${this.escapePath(tableOrName)} DROP CONSTRAINT \"${foreignKeyName}\"`);\n }\n\n /**\n * Escapes given table or view path.\n */\n protected escapePath(target: Table|View|string, disableEscape?: boolean): string {\n let tableName = target instanceof Table || target instanceof View ? target.name : target;\n tableName = tableName.indexOf(\".\") === -1 && this.driver.options.schema ? `${this.driver.options.schema}.${tableName}` : tableName;\n\n return tableName.split(\".\").map(i => {\n return disableEscape ? i : `\"${i}\"`;\n }).join(\".\");\n }\n\n /**\n * Returns object with table schema and table name.\n */\n protected parseTableName(target: Table|string) {\n const tableName = target instanceof Table ? target.name : target;\n if (tableName.indexOf(\".\") === -1) {\n return {\n schema: this.driver.options.schema ? `'${this.driver.options.schema}'` : \"current_schema\",\n tableName: `'${tableName}'`\n };\n } else {\n return {\n schema: `'${tableName.split(\".\")[0]}'`,\n tableName: `'${tableName.split(\".\")[1]}'`\n };\n }\n }\n\n /**\n * Concat database name and schema name to the foreign key name.\n * Needs because FK name is relevant to the schema and database.\n */\n protected buildForeignKeyName(fkName: string, schemaName: string|undefined, dbName: string|undefined): string {\n let joinedFkName = fkName;\n if (schemaName)\n joinedFkName = schemaName + \".\" + joinedFkName;\n if (dbName)\n joinedFkName = dbName + \".\" + joinedFkName;\n\n return joinedFkName;\n }\n\n /**\n * Removes parenthesis around default value.\n * Sql server returns default value with parenthesis around, e.g.\n * ('My text') - for string\n * ((1)) - for number\n * (newsequentialId()) - for function\n */\n protected removeParenthesisFromDefault(defaultValue: any): any {\n if (defaultValue.substr(0, 1) !== \"(\")\n return defaultValue;\n const normalizedDefault = defaultValue.substr(1, defaultValue.lastIndexOf(\")\") - 1);\n return this.removeParenthesisFromDefault(normalizedDefault);\n }\n\n /**\n * Builds a query for create column.\n */\n protected buildCreateColumnSql(column: TableColumn) {\n let c = `\"${column.name}\" ` + this.connection.driver.createFullType(column);\n if (column.charset)\n c += \" CHARACTER SET \" + column.charset;\n if (column.collation)\n c += \" COLLATE \" + column.collation;\n if (column.default !== undefined && column.default !== null) // DEFAULT must be placed before NOT NULL\n c += \" DEFAULT \" + column.default;\n if (column.isNullable !== true && !column.isGenerated) // NOT NULL is not supported with GENERATED\n c += \" NOT NULL\";\n if (column.isGenerated === true && column.generationStrategy === \"increment\")\n c += \" GENERATED ALWAYS AS IDENTITY\";\n\n return c;\n }\n\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/driver/sap/SapQueryRunner.ts"],"names":[],"mappings":"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","file":"SapQueryRunner.js","sourcesContent":["import {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {QueryRunnerAlreadyReleasedError} from \"../../error/QueryRunnerAlreadyReleasedError\";\nimport {TransactionAlreadyStartedError} from \"../../error/TransactionAlreadyStartedError\";\nimport {TransactionNotStartedError} from \"../../error/TransactionNotStartedError\";\nimport {ColumnType, QueryFailedError} from \"../../index\";\nimport {ReadStream} from \"../../platform/PlatformTools\";\nimport {BaseQueryRunner} from \"../../query-runner/BaseQueryRunner\";\nimport {QueryRunner} from \"../../query-runner/QueryRunner\";\nimport {TableIndexOptions} from \"../../schema-builder/options/TableIndexOptions\";\nimport {Table} from \"../../schema-builder/table/Table\";\nimport {TableCheck} from \"../../schema-builder/table/TableCheck\";\nimport {TableColumn} from \"../../schema-builder/table/TableColumn\";\nimport {TableExclusion} from \"../../schema-builder/table/TableExclusion\";\nimport {TableForeignKey} from \"../../schema-builder/table/TableForeignKey\";\nimport {TableIndex} from \"../../schema-builder/table/TableIndex\";\nimport {TableUnique} from \"../../schema-builder/table/TableUnique\";\nimport {View} from \"../../schema-builder/view/View\";\nimport {Broadcaster} from \"../../subscriber/Broadcaster\";\nimport {OrmUtils} from \"../../util/OrmUtils\";\nimport {Query} from \"../Query\";\nimport {IsolationLevel} from \"../types/IsolationLevel\";\nimport {SapDriver} from \"./SapDriver\";\nimport {ReplicationMode} from \"../types/ReplicationMode\";\nimport {BroadcasterResult} from \"../../subscriber/BroadcasterResult\";\n\n/**\n * Runs queries on a single SQL Server database connection.\n */\nexport class SapQueryRunner extends BaseQueryRunner implements QueryRunner {\n\n // -------------------------------------------------------------------------\n // Public Implemented Properties\n // -------------------------------------------------------------------------\n\n /**\n * Database driver used by connection.\n */\n driver: SapDriver;\n\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Last executed query in a transaction.\n * This is needed because we cannot rely on parallel queries because we use second query\n * to select CURRENT_IDENTITY_VALUE()\n */\n protected queryResponsibilityChain: Promise<any>[] = [];\n\n /**\n * Promise used to obtain a database connection from a pool for a first time.\n */\n protected databaseConnectionPromise: Promise<any>;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(driver: SapDriver, mode: ReplicationMode) {\n super();\n this.driver = driver;\n this.connection = driver.connection;\n this.broadcaster = new Broadcaster(this);\n this.mode = mode;\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates/uses database connection from the connection pool to perform further operations.\n * Returns obtained database connection.\n */\n async connect(): Promise<any> {\n if (this.databaseConnection)\n return this.databaseConnection;\n\n this.databaseConnection = await this.driver.obtainMasterConnection();\n\n return this.databaseConnection;\n }\n\n /**\n * Releases used database connection.\n * You cannot use query runner methods once its released.\n */\n release(): Promise<void> {\n this.isReleased = true;\n\n if (this.databaseConnection) {\n return this.driver.master.release(this.databaseConnection);\n }\n\n return Promise.resolve();\n }\n\n /**\n * Starts transaction.\n */\n async startTransaction(isolationLevel?: IsolationLevel): Promise<void> {\n if (this.isReleased)\n throw new QueryRunnerAlreadyReleasedError();\n\n if (this.isTransactionActive)\n throw new TransactionAlreadyStartedError();\n\n const beforeBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastBeforeTransactionStartEvent(beforeBroadcastResult);\n if (beforeBroadcastResult.promises.length > 0) await Promise.all(beforeBroadcastResult.promises);\n\n this.isTransactionActive = true;\n if (isolationLevel) {\n await this.query(`SET TRANSACTION ISOLATION LEVEL ${isolationLevel || \"\"}`);\n }\n\n const afterBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastAfterTransactionStartEvent(afterBroadcastResult);\n if (afterBroadcastResult.promises.length > 0) await Promise.all(afterBroadcastResult.promises);\n }\n\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n */\n async commitTransaction(): Promise<void> {\n if (this.isReleased)\n throw new QueryRunnerAlreadyReleasedError();\n\n if (!this.isTransactionActive)\n throw new TransactionNotStartedError();\n\n const beforeBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastBeforeTransactionCommitEvent(beforeBroadcastResult);\n if (beforeBroadcastResult.promises.length > 0) await Promise.all(beforeBroadcastResult.promises);\n\n await this.query(\"COMMIT\");\n this.isTransactionActive = false;\n\n const afterBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastAfterTransactionCommitEvent(afterBroadcastResult);\n if (afterBroadcastResult.promises.length > 0) await Promise.all(afterBroadcastResult.promises);\n }\n\n /**\n * Rollbacks transaction.\n * Error will be thrown if transaction was not started.\n */\n async rollbackTransaction(): Promise<void> {\n if (this.isReleased)\n throw new QueryRunnerAlreadyReleasedError();\n\n if (!this.isTransactionActive)\n throw new TransactionNotStartedError();\n\n const beforeBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastBeforeTransactionRollbackEvent(beforeBroadcastResult);\n if (beforeBroadcastResult.promises.length > 0) await Promise.all(beforeBroadcastResult.promises);\n\n await this.query(\"ROLLBACK\");\n this.isTransactionActive = false;\n\n const afterBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastAfterTransactionRollbackEvent(afterBroadcastResult);\n if (afterBroadcastResult.promises.length > 0) await Promise.all(afterBroadcastResult.promises);\n }\n\n /**\n * Executes a given SQL query.\n */\n async query(query: string, parameters?: any[]): Promise<any> {\n if (this.isReleased)\n throw new QueryRunnerAlreadyReleasedError();\n\n let waitingOkay: Function;\n const waitingPromise = new Promise((ok) => waitingOkay = ok);\n if (this.queryResponsibilityChain.length) {\n const otherWaitingPromises = [...this.queryResponsibilityChain];\n this.queryResponsibilityChain.push(waitingPromise);\n await Promise.all(otherWaitingPromises);\n }\n\n const promise = new Promise(async (ok, fail) => {\n try {\n const databaseConnection = await this.connect();\n // we disable autocommit because ROLLBACK does not work in autocommit mode\n databaseConnection.setAutoCommit(!this.isTransactionActive);\n this.driver.connection.logger.logQuery(query, parameters, this);\n const queryStartTime = +new Date();\n const isInsertQuery = query.substr(0, 11) === \"INSERT INTO\";\n\n const statement = databaseConnection.prepare(query);\n statement.exec(parameters, (err: any, result: any) => {\n\n // log slow queries if maxQueryExecution time is set\n const maxQueryExecutionTime = this.driver.connection.options.maxQueryExecutionTime;\n const queryEndTime = +new Date();\n const queryExecutionTime = queryEndTime - queryStartTime;\n if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime)\n this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);\n\n const resolveChain = () => {\n if (promiseIndex !== -1)\n this.queryResponsibilityChain.splice(promiseIndex, 1);\n if (waitingPromiseIndex !== -1)\n this.queryResponsibilityChain.splice(waitingPromiseIndex, 1);\n waitingOkay();\n };\n\n let promiseIndex = this.queryResponsibilityChain.indexOf(promise);\n let waitingPromiseIndex = this.queryResponsibilityChain.indexOf(waitingPromise);\n if (err) {\n this.driver.connection.logger.logQueryError(err, query, parameters, this);\n resolveChain();\n return fail(new QueryFailedError(query, parameters, err));\n\n } else {\n if (isInsertQuery) {\n const lastIdQuery = `SELECT CURRENT_IDENTITY_VALUE() FROM \"SYS\".\"DUMMY\"`;\n this.driver.connection.logger.logQuery(lastIdQuery, [], this);\n databaseConnection.exec(lastIdQuery, (err: any, result: { \"CURRENT_IDENTITY_VALUE()\": number }[]) => {\n if (err) {\n this.driver.connection.logger.logQueryError(err, lastIdQuery, [], this);\n resolveChain();\n fail(new QueryFailedError(lastIdQuery, [], err));\n return;\n }\n ok(result[0][\"CURRENT_IDENTITY_VALUE()\"]);\n resolveChain();\n });\n } else {\n ok(result);\n resolveChain();\n }\n }\n });\n } catch (err) {\n fail(err);\n }\n });\n\n // with this condition, Promise.all causes unexpected behavior.\n // if (this.isTransactionActive)\n this.queryResponsibilityChain.push(promise);\n return promise;\n }\n\n /**\n * Returns raw data stream.\n */\n async stream(query: string, parameters?: any[], onEnd?: Function, onError?: Function): Promise<ReadStream> {\n throw new Error(`Stream is not supported by SAP driver.`);\n }\n\n /**\n * Returns all available database names including system databases.\n */\n async getDatabases(): Promise<string[]> {\n const results: ObjectLiteral[] = await this.query(`SELECT DATABASE_NAME FROM \"SYS\".\"M_DATABASES\"`);\n return results.map(result => result[\"DATABASE_NAME\"]);\n }\n\n /**\n * Returns all available schema names including system schemas.\n * If database parameter specified, returns schemas of that database.\n */\n async getSchemas(database?: string): Promise<string[]> {\n const query = database ? `SELECT * FROM \"${database}\".\"SYS\".\"SCHEMAS\"` : `SELECT * FROM \"SYS\".\"SCHEMAS\"`;\n const results: ObjectLiteral[] = await this.query(query);\n return results.map(result => result[\"SCHEMA_NAME\"]);\n }\n\n /**\n * Checks if database with the given name exist.\n */\n async hasDatabase(database: string): Promise<boolean> {\n const databases = await this.getDatabases();\n return databases.indexOf(database) !== -1;\n }\n\n /**\n * Checks if schema with the given name exist.\n */\n async hasSchema(schema: string): Promise<boolean> {\n const schemas = await this.getSchemas();\n return schemas.indexOf(schema) !== -1;\n }\n\n /**\n * Checks if table with the given name exist in the database.\n */\n async hasTable(tableOrName: Table|string): Promise<boolean> {\n const parsedTableName = this.parseTableName(tableOrName);\n const sql = `SELECT * FROM \"SYS\".\"TABLES\" WHERE \"SCHEMA_NAME\" = ${parsedTableName.schema} AND \"TABLE_NAME\" = ${parsedTableName.tableName}`;\n const result = await this.query(sql);\n return result.length ? true : false;\n }\n\n /**\n * Checks if column with the given name exist in the given table.\n */\n async hasColumn(tableOrName: Table|string, columnName: string): Promise<boolean> {\n const parsedTableName = this.parseTableName(tableOrName);\n const sql = `SELECT * FROM \"SYS\".\"TABLE_COLUMNS\" WHERE \"SCHEMA_NAME\" = ${parsedTableName.schema} AND \"TABLE_NAME\" = ${parsedTableName.tableName} AND \"COLUMN_NAME\" = '${columnName}'`;\n const result = await this.query(sql);\n return result.length ? true : false;\n }\n\n /**\n * Creates a new database.\n */\n async createDatabase(database: string, ifNotExist?: boolean): Promise<void> {\n return Promise.resolve();\n }\n\n /**\n * Drops database.\n */\n async dropDatabase(database: string, ifExist?: boolean): Promise<void> {\n return Promise.resolve();\n }\n\n /**\n * Creates a new table schema.\n */\n async createSchema(schema: string, ifNotExist?: boolean): Promise<void> {\n let exist = false;\n if (ifNotExist) {\n const result = await this.query(`SELECT * FROM \"SYS\".\"SCHEMAS\" WHERE \"SCHEMA_NAME\" = '${schema}'`);\n exist = !!result.length;\n }\n if (!ifNotExist || (ifNotExist && !exist)) {\n const up = `CREATE SCHEMA \"${schema}\"`;\n const down = `DROP SCHEMA \"${schema}\" CASCADE`;\n await this.executeQueries(new Query(up), new Query(down));\n }\n }\n\n /**\n * Drops table schema\n */\n async dropSchema(schemaPath: string, ifExist?: boolean, isCascade?: boolean): Promise<void> {\n const schema = schemaPath.indexOf(\".\") === -1 ? schemaPath : schemaPath.split(\".\")[0];\n let exist = false;\n if (ifExist) {\n const result = await this.query(`SELECT * FROM \"SYS\".\"SCHEMAS\" WHERE \"SCHEMA_NAME\" = '${schema}'`);\n exist = !!result.length;\n }\n if (!ifExist || (ifExist && exist)) {\n const up = `DROP SCHEMA \"${schema}\" ${isCascade ? \"CASCADE\" : \"\"}`;\n const down = `CREATE SCHEMA \"${schema}\"`;\n await this.executeQueries(new Query(up), new Query(down));\n }\n }\n\n /**\n * Creates a new table.\n */\n async createTable(table: Table, ifNotExist: boolean = false, createForeignKeys: boolean = true, createIndices: boolean = true): Promise<void> {\n if (ifNotExist) {\n const isTableExist = await this.hasTable(table);\n if (isTableExist) return Promise.resolve();\n }\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n\n upQueries.push(this.createTableSql(table, createForeignKeys));\n downQueries.push(this.dropTableSql(table));\n\n // if createForeignKeys is true, we must drop created foreign keys in down query.\n // createTable does not need separate method to create foreign keys, because it create fk's in the same query with table creation.\n if (createForeignKeys)\n table.foreignKeys.forEach(foreignKey => downQueries.push(this.dropForeignKeySql(table, foreignKey)));\n\n if (createIndices) {\n table.indices.forEach(index => {\n\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name)\n index.name = this.connection.namingStrategy.indexName(table.name, index.columnNames, index.where);\n upQueries.push(this.createIndexSql(table, index));\n downQueries.push(this.dropIndexSql(table, index));\n });\n }\n\n await this.executeQueries(upQueries, downQueries);\n }\n\n /**\n * Drops the table.\n */\n async dropTable(tableOrName: Table|string, ifExist?: boolean, dropForeignKeys: boolean = true, dropIndices: boolean = true): Promise<void> {\n if (ifExist) {\n const isTableExist = await this.hasTable(tableOrName);\n if (!isTableExist) return Promise.resolve();\n }\n\n // if dropTable called with dropForeignKeys = true, we must create foreign keys in down query.\n const createForeignKeys: boolean = dropForeignKeys;\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n\n // It needs because if table does not exist and dropForeignKeys or dropIndices is true, we don't need\n // to perform drop queries for foreign keys and indices.\n\n if (dropIndices) {\n table.indices.forEach(index => {\n upQueries.push(this.dropIndexSql(table, index));\n downQueries.push(this.createIndexSql(table, index));\n });\n }\n\n // if dropForeignKeys is true, we just drop the table, otherwise we also drop table foreign keys.\n // createTable does not need separate method to create foreign keys, because it create fk's in the same query with table creation.\n if (dropForeignKeys)\n table.foreignKeys.forEach(foreignKey => upQueries.push(this.dropForeignKeySql(table, foreignKey)));\n\n upQueries.push(this.dropTableSql(table));\n downQueries.push(this.createTableSql(table, createForeignKeys));\n\n await this.executeQueries(upQueries, downQueries);\n }\n\n /**\n * Creates a new view.\n */\n async createView(view: View): Promise<void> {\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n upQueries.push(this.createViewSql(view));\n upQueries.push(await this.insertViewDefinitionSql(view));\n downQueries.push(this.dropViewSql(view));\n downQueries.push(await this.deleteViewDefinitionSql(view));\n await this.executeQueries(upQueries, downQueries);\n }\n\n /**\n * Drops the view.\n */\n async dropView(target: View|string): Promise<void> {\n const viewName = target instanceof View ? target.name : target;\n const view = await this.getCachedView(viewName);\n\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n upQueries.push(await this.deleteViewDefinitionSql(view));\n upQueries.push(this.dropViewSql(view));\n downQueries.push(await this.insertViewDefinitionSql(view));\n downQueries.push(this.createViewSql(view));\n await this.executeQueries(upQueries, downQueries);\n }\n\n /**\n * Renames a table.\n */\n async renameTable(oldTableOrName: Table|string, newTableName: string): Promise<void> {\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n const oldTable = oldTableOrName instanceof Table ? oldTableOrName : await this.getCachedTable(oldTableOrName);\n const newTable = oldTable.clone();\n const oldTableName = oldTable.name.indexOf(\".\") === -1 ? oldTable.name : oldTable.name.split(\".\")[1];\n const schemaName = oldTable.name.indexOf(\".\") === -1 ? undefined : oldTable.name.split(\".\")[0];\n newTable.name = schemaName ? `${schemaName}.${newTableName}` : newTableName;\n\n // rename table\n upQueries.push(new Query(`RENAME TABLE ${this.escapePath(oldTable.name)} TO ${this.escapePath(newTableName)}`));\n downQueries.push(new Query(`RENAME TABLE ${this.escapePath(newTable.name)} TO ${this.escapePath(oldTableName)}`));\n\n // drop old FK's. Foreign keys must be dropped before the primary keys are dropped\n newTable.foreignKeys.forEach(foreignKey => {\n upQueries.push(this.dropForeignKeySql(newTable, foreignKey));\n downQueries.push(this.createForeignKeySql(newTable, foreignKey));\n });\n\n // SAP HANA does not allow to drop PK's which is referenced by foreign keys.\n // To avoid this, we must drop all referential foreign keys and recreate them later\n const referencedForeignKeySql = `SELECT * FROM \"SYS\".\"REFERENTIAL_CONSTRAINTS\" WHERE \"REFERENCED_SCHEMA_NAME\" = '${schemaName}' AND \"REFERENCED_TABLE_NAME\" = '${oldTableName}'`;\n const dbForeignKeys: ObjectLiteral[] = await this.query(referencedForeignKeySql);\n let referencedForeignKeys: TableForeignKey[] = [];\n const referencedForeignKeyTableMapping: { tableName: string, fkName: string }[] = [];\n if (dbForeignKeys.length > 0) {\n referencedForeignKeys = dbForeignKeys.map(dbForeignKey => {\n const foreignKeys = dbForeignKeys.filter(dbFk => dbFk[\"CONSTRAINT_NAME\"] === dbForeignKey[\"CONSTRAINT_NAME\"]);\n\n referencedForeignKeyTableMapping.push({ tableName: `${dbForeignKey[\"SCHEMA_NAME\"]}.${dbForeignKey[\"TABLE_NAME\"]}`, fkName: dbForeignKey[\"CONSTRAINT_NAME\"] });\n return new TableForeignKey({\n name: dbForeignKey[\"CONSTRAINT_NAME\"],\n columnNames: foreignKeys.map(dbFk => dbFk[\"COLUMN_NAME\"]),\n referencedTableName: newTable.name, // we use renamed table name\n referencedColumnNames: foreignKeys.map(dbFk => dbFk[\"REFERENCED_COLUMN_NAME\"]),\n onDelete: dbForeignKey[\"DELETE_RULE\"] === \"RESTRICT\" ? \"NO ACTION\" : dbForeignKey[\"DELETE_RULE\"],\n onUpdate: dbForeignKey[\"UPDATE_RULE\"] === \"RESTRICT\" ? \"NO ACTION\" : dbForeignKey[\"UPDATE_RULE\"],\n });\n });\n\n // drop referenced foreign keys\n referencedForeignKeys.forEach(foreignKey => {\n const mapping = referencedForeignKeyTableMapping.find(it => it.fkName === foreignKey.name);\n upQueries.push(this.dropForeignKeySql(mapping!.tableName, foreignKey));\n downQueries.push(this.createForeignKeySql(mapping!.tableName, foreignKey));\n });\n }\n\n // rename primary key constraint\n if (newTable.primaryColumns.length > 0) {\n const columnNames = newTable.primaryColumns.map(column => column.name);\n const columnNamesString = columnNames.map(columnName => `\"${columnName}\"`).join(\", \");\n\n const oldPkName = this.connection.namingStrategy.primaryKeyName(oldTable, columnNames);\n const newPkName = this.connection.namingStrategy.primaryKeyName(newTable, columnNames);\n\n // drop old PK\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(newTable)} DROP CONSTRAINT \"${oldPkName}\"`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(newTable)} ADD CONSTRAINT \"${oldPkName}\" PRIMARY KEY (${columnNamesString})`));\n\n // create new PK\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(newTable)} ADD CONSTRAINT \"${newPkName}\" PRIMARY KEY (${columnNamesString})`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(newTable)} DROP CONSTRAINT \"${newPkName}\"`));\n }\n\n // recreate foreign keys with new constraint names\n newTable.foreignKeys.forEach(foreignKey => {\n // replace constraint name\n foreignKey.name = this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, foreignKey.referencedTableName, foreignKey.referencedColumnNames);\n\n // create new FK's\n upQueries.push(this.createForeignKeySql(newTable, foreignKey));\n downQueries.push(this.dropForeignKeySql(newTable, foreignKey));\n });\n\n // restore referenced foreign keys\n referencedForeignKeys.forEach(foreignKey => {\n const mapping = referencedForeignKeyTableMapping.find(it => it.fkName === foreignKey.name);\n upQueries.push(this.createForeignKeySql(mapping!.tableName, foreignKey));\n downQueries.push(this.dropForeignKeySql(mapping!.tableName, foreignKey));\n });\n\n // rename index constraints\n newTable.indices.forEach(index => {\n // build new constraint name\n const newIndexName = this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);\n\n // drop old index\n upQueries.push(this.dropIndexSql(newTable, index));\n downQueries.push(this.createIndexSql(newTable, index));\n\n // replace constraint name\n index.name = newIndexName;\n\n // create new index\n upQueries.push(this.createIndexSql(newTable, index));\n downQueries.push(this.dropIndexSql(newTable, index));\n });\n\n await this.executeQueries(upQueries, downQueries);\n\n // rename old table and replace it in cached tabled;\n oldTable.name = newTable.name;\n this.replaceCachedTable(oldTable, newTable);\n }\n\n /**\n * Creates a new column from the column in the table.\n */\n async addColumn(tableOrName: Table|string, column: TableColumn): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const parsedTableName = this.parseTableName(table);\n const clonedTable = table.clone();\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n\n upQueries.push(new Query(this.addColumnSql(table, column)));\n downQueries.push(new Query(this.dropColumnSql(table, column)));\n\n // create or update primary key constraint\n if (column.isPrimary) {\n const primaryColumns = clonedTable.primaryColumns;\n // if table already have primary key, me must drop it and recreate again\n if (primaryColumns.length > 0) {\n // SAP HANA does not allow to drop PK's which is referenced by foreign keys.\n // To avoid this, we must drop all referential foreign keys and recreate them later\n const referencedForeignKeySql = `SELECT * FROM \"SYS\".\"REFERENTIAL_CONSTRAINTS\" WHERE \"REFERENCED_SCHEMA_NAME\" = ${parsedTableName.schema} AND \"REFERENCED_TABLE_NAME\" = ${parsedTableName.tableName}`;\n const dbForeignKeys: ObjectLiteral[] = await this.query(referencedForeignKeySql);\n let referencedForeignKeys: TableForeignKey[] = [];\n const referencedForeignKeyTableMapping: { tableName: string, fkName: string }[] = [];\n if (dbForeignKeys.length > 0) {\n referencedForeignKeys = dbForeignKeys.map(dbForeignKey => {\n const foreignKeys = dbForeignKeys.filter(dbFk => dbFk[\"CONSTRAINT_NAME\"] === dbForeignKey[\"CONSTRAINT_NAME\"]);\n\n referencedForeignKeyTableMapping.push({ tableName: `${dbForeignKey[\"SCHEMA_NAME\"]}.${dbForeignKey[\"TABLE_NAME\"]}`, fkName: dbForeignKey[\"CONSTRAINT_NAME\"] });\n return new TableForeignKey({\n name: dbForeignKey[\"CONSTRAINT_NAME\"],\n columnNames: foreignKeys.map(dbFk => dbFk[\"COLUMN_NAME\"]),\n referencedTableName: table.name,\n referencedColumnNames: foreignKeys.map(dbFk => dbFk[\"REFERENCED_COLUMN_NAME\"]),\n onDelete: dbForeignKey[\"DELETE_RULE\"] === \"RESTRICT\" ? \"NO ACTION\" : dbForeignKey[\"DELETE_RULE\"],\n onUpdate: dbForeignKey[\"UPDATE_RULE\"] === \"RESTRICT\" ? \"NO ACTION\" : dbForeignKey[\"UPDATE_RULE\"],\n });\n });\n\n // drop referenced foreign keys\n referencedForeignKeys.forEach(foreignKey => {\n const mapping = referencedForeignKeyTableMapping.find(it => it.fkName === foreignKey.name);\n upQueries.push(this.dropForeignKeySql(mapping!.tableName, foreignKey));\n downQueries.push(this.createForeignKeySql(mapping!.tableName, foreignKey));\n });\n }\n\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(column => column.name));\n const columnNames = primaryColumns.map(column => `\"${column.name}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${pkName}\"`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`));\n\n // restore referenced foreign keys\n referencedForeignKeys.forEach(foreignKey => {\n const mapping = referencedForeignKeyTableMapping.find(it => it.fkName === foreignKey.name);\n upQueries.push(this.createForeignKeySql(mapping!.tableName, foreignKey));\n downQueries.push(this.dropForeignKeySql(mapping!.tableName, foreignKey));\n });\n }\n\n primaryColumns.push(column);\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(column => column.name));\n const columnNames = primaryColumns.map(column => `\"${column.name}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${pkName}\"`));\n }\n\n // create column index\n const columnIndex = clonedTable.indices.find(index => index.columnNames.length === 1 && index.columnNames[0] === column.name);\n if (columnIndex) {\n upQueries.push(this.createIndexSql(table, columnIndex));\n downQueries.push(this.dropIndexSql(table, columnIndex));\n\n } else if (column.isUnique) {\n const uniqueIndex = new TableIndex({\n name: this.connection.namingStrategy.indexName(table.name, [column.name]),\n columnNames: [column.name],\n isUnique: true\n });\n clonedTable.indices.push(uniqueIndex);\n clonedTable.uniques.push(new TableUnique({\n name: uniqueIndex.name,\n columnNames: uniqueIndex.columnNames\n }));\n upQueries.push(this.createIndexSql(table, uniqueIndex));\n downQueries.push(this.dropIndexSql(table, uniqueIndex));\n }\n\n await this.executeQueries(upQueries, downQueries);\n\n clonedTable.addColumn(column);\n this.replaceCachedTable(table, clonedTable);\n }\n\n /**\n * Creates a new columns from the column in the table.\n */\n async addColumns(tableOrName: Table|string, columns: TableColumn[]): Promise<void> {\n for (const column of columns) {\n await this.addColumn(tableOrName, column);\n }\n }\n\n /**\n * Renames column in the given table.\n */\n async renameColumn(tableOrName: Table|string, oldTableColumnOrName: TableColumn|string, newTableColumnOrName: TableColumn|string): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const oldColumn = oldTableColumnOrName instanceof TableColumn ? oldTableColumnOrName : table.columns.find(c => c.name === oldTableColumnOrName);\n if (!oldColumn)\n throw new Error(`Column \"${oldTableColumnOrName}\" was not found in the \"${table.name}\" table.`);\n\n let newColumn: TableColumn|undefined = undefined;\n if (newTableColumnOrName instanceof TableColumn) {\n newColumn = newTableColumnOrName;\n } else {\n newColumn = oldColumn.clone();\n newColumn.name = newTableColumnOrName;\n }\n\n await this.changeColumn(table, oldColumn, newColumn);\n }\n\n /**\n * Changes a column in the table.\n */\n async changeColumn(tableOrName: Table|string, oldTableColumnOrName: TableColumn|string, newColumn: TableColumn): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n let clonedTable = table.clone();\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n\n const oldColumn = oldTableColumnOrName instanceof TableColumn\n ? oldTableColumnOrName\n : table.columns.find(column => column.name === oldTableColumnOrName);\n if (!oldColumn)\n throw new Error(`Column \"${oldTableColumnOrName}\" was not found in the \"${table.name}\" table.`);\n\n if ((newColumn.isGenerated !== oldColumn.isGenerated && newColumn.generationStrategy !== \"uuid\") || newColumn.type !== oldColumn.type || newColumn.length !== oldColumn.length) {\n // SQL Server does not support changing of IDENTITY column, so we must drop column and recreate it again.\n // Also, we recreate column if column type changed\n await this.dropColumn(table, oldColumn);\n await this.addColumn(table, newColumn);\n\n // update cloned table\n clonedTable = table.clone();\n\n } else {\n if (newColumn.name !== oldColumn.name) {\n\n // rename column\n upQueries.push(new Query(`RENAME COLUMN ${this.escapePath(table)}.\"${oldColumn.name}\" TO \"${newColumn.name}\"`));\n downQueries.push(new Query(`RENAME COLUMN ${this.escapePath(table)}.\"${newColumn.name}\" TO \"${oldColumn.name}\"`));\n\n if (oldColumn.isPrimary === true) {\n const primaryColumns = clonedTable.primaryColumns;\n\n // build old primary constraint name\n const columnNames = primaryColumns.map(column => column.name);\n const oldPkName = this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);\n\n // replace old column name with new column name\n columnNames.splice(columnNames.indexOf(oldColumn.name), 1);\n columnNames.push(newColumn.name);\n const columnNamesString = columnNames.map(columnName => `\"${columnName}\"`).join(\", \");\n\n // drop old PK\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(clonedTable)} DROP CONSTRAINT \"${oldPkName}\"`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(clonedTable)} ADD CONSTRAINT \"${oldPkName}\" PRIMARY KEY (${columnNamesString})`));\n\n // build new primary constraint name\n const newPkName = this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);\n\n // create new PK\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(clonedTable)} ADD CONSTRAINT \"${newPkName}\" PRIMARY KEY (${columnNamesString})`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(clonedTable)} DROP CONSTRAINT \"${newPkName}\"`));\n }\n\n // rename index constraints\n clonedTable.findColumnIndices(oldColumn).forEach(index => {\n // build new constraint name\n index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);\n index.columnNames.push(newColumn.name);\n const newIndexName = this.connection.namingStrategy.indexName(clonedTable, index.columnNames, index.where);\n\n // drop old index\n upQueries.push(this.dropIndexSql(clonedTable, index));\n downQueries.push(this.createIndexSql(clonedTable, index));\n\n // replace constraint name\n index.name = newIndexName;\n\n // create new index\n upQueries.push(this.createIndexSql(clonedTable, index));\n downQueries.push(this.dropIndexSql(clonedTable, index));\n });\n\n // rename foreign key constraints\n clonedTable.findColumnForeignKeys(oldColumn).forEach(foreignKey => {\n // build new constraint name\n foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);\n foreignKey.columnNames.push(newColumn.name);\n const newForeignKeyName = this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, foreignKey.referencedTableName, foreignKey.referencedColumnNames);\n\n upQueries.push(this.dropForeignKeySql(clonedTable, foreignKey));\n downQueries.push(this.createForeignKeySql(clonedTable, foreignKey));\n\n // replace constraint name\n foreignKey.name = newForeignKeyName;\n\n // create new FK's\n upQueries.push(this.createForeignKeySql(clonedTable, foreignKey));\n downQueries.push(this.dropForeignKeySql(clonedTable, foreignKey));\n });\n\n // rename check constraints\n clonedTable.findColumnChecks(oldColumn).forEach(check => {\n // build new constraint name\n check.columnNames!.splice(check.columnNames!.indexOf(oldColumn.name), 1);\n check.columnNames!.push(newColumn.name);\n const newCheckName = this.connection.namingStrategy.checkConstraintName(clonedTable, check.expression!);\n\n upQueries.push(this.dropCheckConstraintSql(clonedTable, check));\n downQueries.push(this.createCheckConstraintSql(clonedTable, check));\n\n // replace constraint name\n check.name = newCheckName;\n\n upQueries.push(this.createCheckConstraintSql(clonedTable, check));\n downQueries.push(this.dropCheckConstraintSql(clonedTable, check));\n });\n\n // rename old column in the Table object\n const oldTableColumn = clonedTable.columns.find(column => column.name === oldColumn.name);\n clonedTable.columns[clonedTable.columns.indexOf(oldTableColumn!)].name = newColumn.name;\n oldColumn.name = newColumn.name;\n }\n\n if (this.isColumnChanged(oldColumn, newColumn)) {\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ALTER (${this.buildCreateColumnSql(newColumn)})`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ALTER (${this.buildCreateColumnSql(oldColumn)})`));\n }\n\n if (newColumn.isPrimary !== oldColumn.isPrimary) {\n const primaryColumns = clonedTable.primaryColumns;\n\n // if primary column state changed, we must always drop existed constraint.\n if (primaryColumns.length > 0) {\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(column => column.name));\n const columnNames = primaryColumns.map(column => `\"${column.name}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${pkName}\"`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`));\n }\n\n if (newColumn.isPrimary === true) {\n primaryColumns.push(newColumn);\n // update column in table\n const column = clonedTable.columns.find(column => column.name === newColumn.name);\n column!.isPrimary = true;\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(column => column.name));\n const columnNames = primaryColumns.map(column => `\"${column.name}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${pkName}\"`));\n\n } else {\n const primaryColumn = primaryColumns.find(c => c.name === newColumn.name);\n primaryColumns.splice(primaryColumns.indexOf(primaryColumn!), 1);\n\n // update column in table\n const column = clonedTable.columns.find(column => column.name === newColumn.name);\n column!.isPrimary = false;\n\n // if we have another primary keys, we must recreate constraint.\n if (primaryColumns.length > 0) {\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(column => column.name));\n const columnNames = primaryColumns.map(column => `\"${column.name}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${pkName}\"`));\n }\n }\n }\n\n if (newColumn.isUnique !== oldColumn.isUnique) {\n if (newColumn.isUnique === true) {\n const uniqueIndex = new TableIndex({\n name: this.connection.namingStrategy.indexName(table.name, [newColumn.name]),\n columnNames: [newColumn.name],\n isUnique: true\n });\n clonedTable.indices.push(uniqueIndex);\n clonedTable.uniques.push(new TableUnique({\n name: uniqueIndex.name,\n columnNames: uniqueIndex.columnNames\n }));\n upQueries.push(this.createIndexSql(table, uniqueIndex));\n downQueries.push(this.dropIndexSql(table, uniqueIndex));\n\n } else {\n const uniqueIndex = clonedTable.indices.find(index => {\n return index.columnNames.length === 1 && index.isUnique === true && !!index.columnNames.find(columnName => columnName === newColumn.name);\n });\n clonedTable.indices.splice(clonedTable.indices.indexOf(uniqueIndex!), 1);\n\n const tableUnique = clonedTable.uniques.find(unique => unique.name === uniqueIndex!.name);\n clonedTable.uniques.splice(clonedTable.uniques.indexOf(tableUnique!), 1);\n\n upQueries.push(this.dropIndexSql(table, uniqueIndex!));\n downQueries.push(this.createIndexSql(table, uniqueIndex!));\n }\n }\n\n if (newColumn.default !== oldColumn.default) {\n if (newColumn.default !== null && newColumn.default !== undefined) {\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ALTER (\"${newColumn.name}\" ${this.connection.driver.createFullType(newColumn)} DEFAULT ${newColumn.default})`));\n\n if (oldColumn.default !== null && oldColumn.default !== undefined) {\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ALTER (\"${oldColumn.name}\" ${this.connection.driver.createFullType(oldColumn)} DEFAULT ${oldColumn.default})`));\n } else {\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ALTER (\"${oldColumn.name}\" ${this.connection.driver.createFullType(oldColumn)} DEFAULT NULL)`));\n }\n\n } else if (oldColumn.default !== null && oldColumn.default !== undefined) {\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ALTER (\"${newColumn.name}\" ${this.connection.driver.createFullType(newColumn)} DEFAULT NULL)`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ALTER (\"${oldColumn.name}\" ${this.connection.driver.createFullType(oldColumn)} DEFAULT ${oldColumn.default})`));\n }\n }\n\n await this.executeQueries(upQueries, downQueries);\n this.replaceCachedTable(table, clonedTable);\n }\n }\n\n /**\n * Changes a column in the table.\n */\n async changeColumns(tableOrName: Table|string, changedColumns: { newColumn: TableColumn, oldColumn: TableColumn }[]): Promise<void> {\n for (const {oldColumn, newColumn} of changedColumns) {\n await this.changeColumn(tableOrName, oldColumn, newColumn)\n }\n }\n\n /**\n * Drops column in the table.\n */\n async dropColumn(tableOrName: Table|string, columnOrName: TableColumn|string): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const parsedTableName = this.parseTableName(table);\n const column = columnOrName instanceof TableColumn ? columnOrName : table.findColumnByName(columnOrName);\n if (!column)\n throw new Error(`Column \"${columnOrName}\" was not found in table \"${table.name}\"`);\n\n const clonedTable = table.clone();\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n\n // drop primary key constraint\n if (column.isPrimary) {\n // SAP HANA does not allow to drop PK's which is referenced by foreign keys.\n // To avoid this, we must drop all referential foreign keys and recreate them later\n const referencedForeignKeySql = `SELECT * FROM \"SYS\".\"REFERENTIAL_CONSTRAINTS\" WHERE \"REFERENCED_SCHEMA_NAME\" = ${parsedTableName.schema} AND \"REFERENCED_TABLE_NAME\" = ${parsedTableName.tableName}`;\n const dbForeignKeys: ObjectLiteral[] = await this.query(referencedForeignKeySql);\n let referencedForeignKeys: TableForeignKey[] = [];\n const referencedForeignKeyTableMapping: { tableName: string, fkName: string }[] = [];\n if (dbForeignKeys.length > 0) {\n referencedForeignKeys = dbForeignKeys.map(dbForeignKey => {\n const foreignKeys = dbForeignKeys.filter(dbFk => dbFk[\"CONSTRAINT_NAME\"] === dbForeignKey[\"CONSTRAINT_NAME\"]);\n\n referencedForeignKeyTableMapping.push({ tableName: `${dbForeignKey[\"SCHEMA_NAME\"]}.${dbForeignKey[\"TABLE_NAME\"]}`, fkName: dbForeignKey[\"CONSTRAINT_NAME\"] });\n return new TableForeignKey({\n name: dbForeignKey[\"CONSTRAINT_NAME\"],\n columnNames: foreignKeys.map(dbFk => dbFk[\"COLUMN_NAME\"]),\n referencedTableName: table.name,\n referencedColumnNames: foreignKeys.map(dbFk => dbFk[\"REFERENCED_COLUMN_NAME\"]),\n onDelete: dbForeignKey[\"DELETE_RULE\"] === \"RESTRICT\" ? \"NO ACTION\" : dbForeignKey[\"DELETE_RULE\"],\n onUpdate: dbForeignKey[\"UPDATE_RULE\"] === \"RESTRICT\" ? \"NO ACTION\" : dbForeignKey[\"UPDATE_RULE\"],\n });\n });\n\n // drop referenced foreign keys\n referencedForeignKeys.forEach(foreignKey => {\n const mapping = referencedForeignKeyTableMapping.find(it => it.fkName === foreignKey.name);\n upQueries.push(this.dropForeignKeySql(mapping!.tableName, foreignKey));\n downQueries.push(this.createForeignKeySql(mapping!.tableName, foreignKey));\n });\n }\n\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, clonedTable.primaryColumns.map(column => column.name));\n const columnNames = clonedTable.primaryColumns.map(primaryColumn => `\"${primaryColumn.name}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(clonedTable)} DROP CONSTRAINT \"${pkName}\"`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(clonedTable)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`));\n\n // update column in table\n const tableColumn = clonedTable.findColumnByName(column.name);\n tableColumn!.isPrimary = false;\n\n // if primary key have multiple columns, we must recreate it without dropped column\n if (clonedTable.primaryColumns.length > 0) {\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, clonedTable.primaryColumns.map(column => column.name));\n const columnNames = clonedTable.primaryColumns.map(primaryColumn => `\"${primaryColumn.name}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(clonedTable)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(clonedTable)} DROP CONSTRAINT \"${pkName}\"`));\n }\n\n // restore referenced foreign keys\n referencedForeignKeys.forEach(foreignKey => {\n const mapping = referencedForeignKeyTableMapping.find(it => it.fkName === foreignKey.name);\n upQueries.push(this.createForeignKeySql(mapping!.tableName, foreignKey));\n downQueries.push(this.dropForeignKeySql(mapping!.tableName, foreignKey));\n });\n }\n\n // drop column index\n const columnIndex = clonedTable.indices.find(index => index.columnNames.length === 1 && index.columnNames[0] === column.name);\n if (columnIndex) {\n clonedTable.indices.splice(clonedTable.indices.indexOf(columnIndex), 1);\n upQueries.push(this.dropIndexSql(table, columnIndex));\n downQueries.push(this.createIndexSql(table, columnIndex));\n\n } else if (column.isUnique) {\n // we splice constraints both from table uniques and indices.\n const uniqueName = this.connection.namingStrategy.uniqueConstraintName(table.name, [column.name]);\n const foundUnique = clonedTable.uniques.find(unique => unique.name === uniqueName);\n if (foundUnique) {\n clonedTable.uniques.splice(clonedTable.uniques.indexOf(foundUnique), 1);\n upQueries.push(this.dropIndexSql(table, uniqueName));\n downQueries.push(new Query(`CREATE UNIQUE INDEX \"${uniqueName}\" ON ${this.escapePath(table)} (\"${column.name}\")`));\n }\n\n const indexName = this.connection.namingStrategy.indexName(table.name, [column.name]);\n const foundIndex = clonedTable.indices.find(index => index.name === indexName);\n if (foundIndex) {\n clonedTable.indices.splice(clonedTable.indices.indexOf(foundIndex), 1);\n upQueries.push(this.dropIndexSql(table, indexName));\n downQueries.push(new Query(`CREATE UNIQUE INDEX \"${indexName}\" ON ${this.escapePath(table)} (\"${column.name}\")`));\n }\n }\n\n // drop column check\n const columnCheck = clonedTable.checks.find(check => !!check.columnNames && check.columnNames.length === 1 && check.columnNames[0] === column.name);\n if (columnCheck) {\n clonedTable.checks.splice(clonedTable.checks.indexOf(columnCheck), 1);\n upQueries.push(this.dropCheckConstraintSql(table, columnCheck));\n downQueries.push(this.createCheckConstraintSql(table, columnCheck));\n }\n\n upQueries.push(new Query(this.dropColumnSql(table, column)));\n downQueries.push(new Query(this.addColumnSql(table, column)));\n\n await this.executeQueries(upQueries, downQueries);\n\n clonedTable.removeColumn(column);\n this.replaceCachedTable(table, clonedTable);\n }\n\n /**\n * Drops the columns in the table.\n */\n async dropColumns(tableOrName: Table|string, columns: TableColumn[]): Promise<void> {\n for (const column of columns) {\n await this.dropColumn(tableOrName, column);\n }\n }\n\n /**\n * Creates a new primary key.\n */\n async createPrimaryKey(tableOrName: Table|string, columnNames: string[]): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const clonedTable = table.clone();\n\n const up = this.createPrimaryKeySql(table, columnNames);\n\n // mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.\n clonedTable.columns.forEach(column => {\n if (columnNames.find(columnName => columnName === column.name))\n column.isPrimary = true;\n });\n const down = this.dropPrimaryKeySql(clonedTable);\n\n await this.executeQueries(up, down);\n this.replaceCachedTable(table, clonedTable);\n }\n\n /**\n * Updates composite primary keys.\n */\n async updatePrimaryKeys(tableOrName: Table|string, columns: TableColumn[]): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const parsedTableName = this.parseTableName(table);\n const clonedTable = table.clone();\n const columnNames = columns.map(column => column.name);\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n\n // SAP HANA does not allow to drop PK's which is referenced by foreign keys.\n // To avoid this, we must drop all referential foreign keys and recreate them later\n const referencedForeignKeySql = `SELECT * FROM \"SYS\".\"REFERENTIAL_CONSTRAINTS\" WHERE \"REFERENCED_SCHEMA_NAME\" = ${parsedTableName.schema} AND \"REFERENCED_TABLE_NAME\" = ${parsedTableName.tableName}`;\n const dbForeignKeys: ObjectLiteral[] = await this.query(referencedForeignKeySql);\n let referencedForeignKeys: TableForeignKey[] = [];\n const referencedForeignKeyTableMapping: { tableName: string, fkName: string }[] = [];\n if (dbForeignKeys.length > 0) {\n referencedForeignKeys = dbForeignKeys.map(dbForeignKey => {\n const foreignKeys = dbForeignKeys.filter(dbFk => dbFk[\"CONSTRAINT_NAME\"] === dbForeignKey[\"CONSTRAINT_NAME\"]);\n\n referencedForeignKeyTableMapping.push({ tableName: `${dbForeignKey[\"SCHEMA_NAME\"]}.${dbForeignKey[\"TABLE_NAME\"]}`, fkName: dbForeignKey[\"CONSTRAINT_NAME\"] });\n return new TableForeignKey({\n name: dbForeignKey[\"CONSTRAINT_NAME\"],\n columnNames: foreignKeys.map(dbFk => dbFk[\"COLUMN_NAME\"]),\n referencedTableName: table.name,\n referencedColumnNames: foreignKeys.map(dbFk => dbFk[\"REFERENCED_COLUMN_NAME\"]),\n onDelete: dbForeignKey[\"DELETE_RULE\"] === \"RESTRICT\" ? \"NO ACTION\" : dbForeignKey[\"DELETE_RULE\"],\n onUpdate: dbForeignKey[\"UPDATE_RULE\"] === \"RESTRICT\" ? \"NO ACTION\" : dbForeignKey[\"UPDATE_RULE\"],\n });\n });\n\n // drop referenced foreign keys\n referencedForeignKeys.forEach(foreignKey => {\n const mapping = referencedForeignKeyTableMapping.find(it => it.fkName === foreignKey.name);\n upQueries.push(this.dropForeignKeySql(mapping!.tableName, foreignKey));\n downQueries.push(this.createForeignKeySql(mapping!.tableName, foreignKey));\n });\n }\n\n // if table already have primary columns, we must drop them.\n const primaryColumns = clonedTable.primaryColumns;\n if (primaryColumns.length > 0) {\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(column => column.name));\n const columnNamesString = primaryColumns.map(column => `\"${column.name}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${pkName}\"`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNamesString})`));\n }\n\n // update columns in table.\n clonedTable.columns\n .filter(column => columnNames.indexOf(column.name) !== -1)\n .forEach(column => column.isPrimary = true);\n\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, columnNames);\n const columnNamesString = columnNames.map(columnName => `\"${columnName}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNamesString})`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${pkName}\"`));\n\n // restore referenced foreign keys\n referencedForeignKeys.forEach(foreignKey => {\n const mapping = referencedForeignKeyTableMapping.find(it => it.fkName === foreignKey.name);\n upQueries.push(this.createForeignKeySql(mapping!.tableName, foreignKey));\n downQueries.push(this.dropForeignKeySql(mapping!.tableName, foreignKey));\n });\n\n await this.executeQueries(upQueries, downQueries);\n this.replaceCachedTable(table, clonedTable);\n }\n\n /**\n * Drops a primary key.\n */\n async dropPrimaryKey(tableOrName: Table|string): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const parsedTableName = this.parseTableName(table);\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n\n // SAP HANA does not allow to drop PK's which is referenced by foreign keys.\n // To avoid this, we must drop all referential foreign keys and recreate them later\n const referencedForeignKeySql = `SELECT * FROM \"SYS\".\"REFERENTIAL_CONSTRAINTS\" WHERE \"REFERENCED_SCHEMA_NAME\" = ${parsedTableName.schema} AND \"REFERENCED_TABLE_NAME\" = ${parsedTableName.tableName}`;\n const dbForeignKeys: ObjectLiteral[] = await this.query(referencedForeignKeySql);\n let referencedForeignKeys: TableForeignKey[] = [];\n const referencedForeignKeyTableMapping: { tableName: string, fkName: string }[] = [];\n if (dbForeignKeys.length > 0) {\n referencedForeignKeys = dbForeignKeys.map(dbForeignKey => {\n const foreignKeys = dbForeignKeys.filter(dbFk => dbFk[\"CONSTRAINT_NAME\"] === dbForeignKey[\"CONSTRAINT_NAME\"]);\n\n referencedForeignKeyTableMapping.push({ tableName: `${dbForeignKey[\"SCHEMA_NAME\"]}.${dbForeignKey[\"TABLE_NAME\"]}`, fkName: dbForeignKey[\"CONSTRAINT_NAME\"] });\n return new TableForeignKey({\n name: dbForeignKey[\"CONSTRAINT_NAME\"],\n columnNames: foreignKeys.map(dbFk => dbFk[\"COLUMN_NAME\"]),\n referencedTableName: table.name,\n referencedColumnNames: foreignKeys.map(dbFk => dbFk[\"REFERENCED_COLUMN_NAME\"]),\n onDelete: dbForeignKey[\"DELETE_RULE\"] === \"RESTRICT\" ? \"NO ACTION\" : dbForeignKey[\"DELETE_RULE\"],\n onUpdate: dbForeignKey[\"UPDATE_RULE\"] === \"RESTRICT\" ? \"NO ACTION\" : dbForeignKey[\"UPDATE_RULE\"],\n });\n });\n\n // drop referenced foreign keys\n referencedForeignKeys.forEach(foreignKey => {\n const mapping = referencedForeignKeyTableMapping.find(it => it.fkName === foreignKey.name);\n upQueries.push(this.dropForeignKeySql(mapping!.tableName, foreignKey));\n downQueries.push(this.createForeignKeySql(mapping!.tableName, foreignKey));\n });\n }\n\n upQueries.push(this.dropPrimaryKeySql(table));\n downQueries.push(this.createPrimaryKeySql(table, table.primaryColumns.map(column => column.name)));\n\n // restore referenced foreign keys\n referencedForeignKeys.forEach(foreignKey => {\n const mapping = referencedForeignKeyTableMapping.find(it => it.fkName === foreignKey.name);\n upQueries.push(this.createForeignKeySql(mapping!.tableName, foreignKey));\n downQueries.push(this.dropForeignKeySql(mapping!.tableName, foreignKey));\n });\n\n await this.executeQueries(upQueries, downQueries);\n table.primaryColumns.forEach(column => {\n column.isPrimary = false;\n });\n }\n\n /**\n * Creates a new unique constraint.\n */\n async createUniqueConstraint(tableOrName: Table|string, uniqueConstraint: TableUnique): Promise<void> {\n throw new Error(`SAP HANA does not support unique constraints. Use unique index instead.`);\n }\n\n /**\n * Creates a new unique constraints.\n */\n async createUniqueConstraints(tableOrName: Table|string, uniqueConstraints: TableUnique[]): Promise<void> {\n throw new Error(`SAP HANA does not support unique constraints. Use unique index instead.`);\n }\n\n /**\n * Drops unique constraint.\n */\n async dropUniqueConstraint(tableOrName: Table|string, uniqueOrName: TableUnique|string): Promise<void> {\n throw new Error(`SAP HANA does not support unique constraints. Use unique index instead.`);\n }\n\n /**\n * Drops an unique constraints.\n */\n async dropUniqueConstraints(tableOrName: Table|string, uniqueConstraints: TableUnique[]): Promise<void> {\n throw new Error(`SAP HANA does not support unique constraints. Use unique index instead.`);\n }\n\n /**\n * Creates a new check constraint.\n */\n async createCheckConstraint(tableOrName: Table|string, checkConstraint: TableCheck): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n\n // new unique constraint may be passed without name. In this case we generate unique name manually.\n if (!checkConstraint.name)\n checkConstraint.name = this.connection.namingStrategy.checkConstraintName(table.name, checkConstraint.expression!);\n\n const up = this.createCheckConstraintSql(table, checkConstraint);\n const down = this.dropCheckConstraintSql(table, checkConstraint);\n await this.executeQueries(up, down);\n table.addCheckConstraint(checkConstraint);\n }\n\n /**\n * Creates a new check constraints.\n */\n async createCheckConstraints(tableOrName: Table|string, checkConstraints: TableCheck[]): Promise<void> {\n const promises = checkConstraints.map(checkConstraint => this.createCheckConstraint(tableOrName, checkConstraint));\n await Promise.all(promises);\n }\n\n /**\n * Drops check constraint.\n */\n async dropCheckConstraint(tableOrName: Table|string, checkOrName: TableCheck|string): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const checkConstraint = checkOrName instanceof TableCheck ? checkOrName : table.checks.find(c => c.name === checkOrName);\n if (!checkConstraint)\n throw new Error(`Supplied check constraint was not found in table ${table.name}`);\n\n const up = this.dropCheckConstraintSql(table, checkConstraint);\n const down = this.createCheckConstraintSql(table, checkConstraint);\n await this.executeQueries(up, down);\n table.removeCheckConstraint(checkConstraint);\n }\n\n /**\n * Drops check constraints.\n */\n async dropCheckConstraints(tableOrName: Table|string, checkConstraints: TableCheck[]): Promise<void> {\n const promises = checkConstraints.map(checkConstraint => this.dropCheckConstraint(tableOrName, checkConstraint));\n await Promise.all(promises);\n }\n\n /**\n * Creates a new exclusion constraint.\n */\n async createExclusionConstraint(tableOrName: Table|string, exclusionConstraint: TableExclusion): Promise<void> {\n throw new Error(`SAP HANA does not support exclusion constraints.`);\n }\n\n /**\n * Creates a new exclusion constraints.\n */\n async createExclusionConstraints(tableOrName: Table|string, exclusionConstraints: TableExclusion[]): Promise<void> {\n throw new Error(`SAP HANA does not support exclusion constraints.`);\n }\n\n /**\n * Drops exclusion constraint.\n */\n async dropExclusionConstraint(tableOrName: Table|string, exclusionOrName: TableExclusion|string): Promise<void> {\n throw new Error(`SAP HANA does not support exclusion constraints.`);\n }\n\n /**\n * Drops exclusion constraints.\n */\n async dropExclusionConstraints(tableOrName: Table|string, exclusionConstraints: TableExclusion[]): Promise<void> {\n throw new Error(`SAP HANA does not support exclusion constraints.`);\n }\n\n /**\n * Creates a new foreign key.\n */\n async createForeignKey(tableOrName: Table|string, foreignKey: TableForeignKey): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n\n // new FK may be passed without name. In this case we generate FK name manually.\n if (!foreignKey.name)\n foreignKey.name = this.connection.namingStrategy.foreignKeyName(table.name, foreignKey.columnNames, foreignKey.referencedTableName, foreignKey.referencedColumnNames);\n\n const up = this.createForeignKeySql(table, foreignKey);\n const down = this.dropForeignKeySql(table, foreignKey);\n await this.executeQueries(up, down);\n table.addForeignKey(foreignKey);\n }\n\n /**\n * Creates a new foreign keys.\n */\n async createForeignKeys(tableOrName: Table|string, foreignKeys: TableForeignKey[]): Promise<void> {\n const promises = foreignKeys.map(foreignKey => this.createForeignKey(tableOrName, foreignKey));\n await Promise.all(promises);\n }\n\n /**\n * Drops a foreign key from the table.\n */\n async dropForeignKey(tableOrName: Table|string, foreignKeyOrName: TableForeignKey|string): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const foreignKey = foreignKeyOrName instanceof TableForeignKey ? foreignKeyOrName : table.foreignKeys.find(fk => fk.name === foreignKeyOrName);\n if (!foreignKey)\n throw new Error(`Supplied foreign key was not found in table ${table.name}`);\n\n const up = this.dropForeignKeySql(table, foreignKey);\n const down = this.createForeignKeySql(table, foreignKey);\n await this.executeQueries(up, down);\n table.removeForeignKey(foreignKey);\n }\n\n /**\n * Drops a foreign keys from the table.\n */\n async dropForeignKeys(tableOrName: Table|string, foreignKeys: TableForeignKey[]): Promise<void> {\n const promises = foreignKeys.map(foreignKey => this.dropForeignKey(tableOrName, foreignKey));\n await Promise.all(promises);\n }\n\n /**\n * Creates a new index.\n */\n async createIndex(tableOrName: Table|string, index: TableIndex): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name)\n index.name = this.connection.namingStrategy.indexName(table.name, index.columnNames, index.where);\n\n const up = this.createIndexSql(table, index);\n const down = this.dropIndexSql(table, index);\n await this.executeQueries(up, down);\n table.addIndex(index);\n }\n\n /**\n * Creates a new indices\n */\n async createIndices(tableOrName: Table|string, indices: TableIndex[]): Promise<void> {\n const promises = indices.map(index => this.createIndex(tableOrName, index));\n await Promise.all(promises);\n }\n\n /**\n * Drops an index.\n */\n async dropIndex(tableOrName: Table|string, indexOrName: TableIndex|string): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const index = indexOrName instanceof TableIndex ? indexOrName : table.indices.find(i => i.name === indexOrName);\n if (!index)\n throw new Error(`Supplied index was not found in table ${table.name}`);\n\n const up = this.dropIndexSql(table, index);\n const down = this.createIndexSql(table, index);\n await this.executeQueries(up, down);\n table.removeIndex(index);\n }\n\n /**\n * Drops an indices from the table.\n */\n async dropIndices(tableOrName: Table|string, indices: TableIndex[]): Promise<void> {\n const promises = indices.map(index => this.dropIndex(tableOrName, index));\n await Promise.all(promises);\n }\n\n /**\n * Clears all table contents.\n * Note: this operation uses SQL's TRUNCATE query which cannot be reverted in transactions.\n */\n async clearTable(tablePath: string): Promise<void> {\n await this.query(`TRUNCATE TABLE ${this.escapePath(tablePath)}`);\n }\n\n /**\n * Removes all tables from the currently connected database.\n */\n async clearDatabase(): Promise<void> {\n const schemas: string[] = [];\n this.connection.entityMetadatas\n .filter(metadata => metadata.schema)\n .forEach(metadata => {\n const isSchemaExist = !!schemas.find(schema => schema === metadata.schema);\n if (!isSchemaExist)\n schemas.push(metadata.schema!);\n });\n\n schemas.push(this.driver.options.schema || \"current_schema\");\n const schemaNamesString = schemas.map(name => {\n return name === \"current_schema\" ? name : \"'\" + name + \"'\";\n }).join(\", \");\n\n await this.startTransaction();\n try {\n // const selectViewDropsQuery = `SELECT 'DROP VIEW IF EXISTS \"' || schemaname || '\".\"' || viewname || '\" CASCADE;' as \"query\" ` +\n // `FROM \"pg_views\" WHERE \"schemaname\" IN (${schemaNamesString}) AND \"viewname\" NOT IN ('geography_columns', 'geometry_columns', 'raster_columns', 'raster_overviews')`;\n // const dropViewQueries: ObjectLiteral[] = await this.query(selectViewDropsQuery);\n // await Promise.all(dropViewQueries.map(q => this.query(q[\"query\"])));\n\n // ignore spatial_ref_sys; it's a special table supporting PostGIS\n const selectTableDropsQuery = `SELECT 'DROP TABLE \"' || schema_name || '\".\"' || table_name || '\" CASCADE;' as \"query\" FROM \"SYS\".\"TABLES\" WHERE \"SCHEMA_NAME\" IN (${schemaNamesString}) AND \"TABLE_NAME\" NOT IN ('SYS_AFL_GENERATOR_PARAMETERS') AND \"IS_COLUMN_TABLE\" = 'TRUE'`;\n const dropTableQueries: ObjectLiteral[] = await this.query(selectTableDropsQuery);\n await Promise.all(dropTableQueries.map(q => this.query(q[\"query\"])));\n\n await this.commitTransaction();\n\n } catch (error) {\n try { // we throw original error even if rollback thrown an error\n await this.rollbackTransaction();\n } catch (rollbackError) { }\n throw error;\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Return current database.\n */\n protected async getCurrentDatabase(): Promise<string> {\n const currentDBQuery = await this.query(`SELECT \"VALUE\" AS \"db_name\" FROM \"SYS\".\"M_SYSTEM_OVERVIEW\" WHERE \"SECTION\" = 'System' and \"NAME\" = 'Instance ID'`);\n return currentDBQuery[0][\"db_name\"];\n }\n\n /**\n * Return current schema.\n */\n protected async getCurrentSchema(): Promise<string> {\n const currentSchemaQuery = await this.query(`SELECT CURRENT_SCHEMA AS \"schema_name\" FROM \"SYS\".\"DUMMY\"`);\n return currentSchemaQuery[0][\"schema_name\"];\n }\n\n protected async loadViews(viewNames: string[]): Promise<View[]> {\n const hasTable = await this.hasTable(this.getTypeormMetadataTableName());\n if (!hasTable)\n return Promise.resolve([]);\n\n const currentSchema = await this.getCurrentSchema();\n\n const viewsCondition = viewNames.map(viewName => {\n let [schema, name] = viewName.split(\".\");\n if (!name) {\n name = schema;\n schema = this.driver.options.schema || currentSchema;\n }\n return `(\"t\".\"schema\" = '${schema}' AND \"t\".\"name\" = '${name}')`;\n }).join(\" OR \");\n\n const query = `SELECT \"t\".* FROM ${this.escapePath(this.getTypeormMetadataTableName())} \"t\" WHERE \"t\".\"type\" = 'VIEW' ${viewsCondition ? `AND (${viewsCondition})` : \"\"}`;\n const dbViews = await this.query(query);\n return dbViews.map((dbView: any) => {\n const view = new View();\n const schema = dbView[\"schema\"] === currentSchema && !this.driver.options.schema ? undefined : dbView[\"schema\"];\n view.name = this.driver.buildTableName(dbView[\"name\"], schema);\n view.expression = dbView[\"value\"];\n return view;\n });\n }\n\n /**\n * Loads all tables (with given names) from the database and creates a Table from them.\n */\n protected async loadTables(tableNames: string[]): Promise<Table[]> {\n\n // if no tables given then no need to proceed\n if (!tableNames || !tableNames.length)\n return [];\n\n const currentSchema = await this.getCurrentSchema();\n const tablesCondition = tableNames.map(tableName => {\n let [schema, name] = tableName.split(\".\");\n if (!name) {\n name = schema;\n schema = this.driver.options.schema || currentSchema;\n }\n return `(\"SCHEMA_NAME\" = '${schema}' AND \"TABLE_NAME\" = '${name}')`;\n }).join(\" OR \");\n const tablesSql = `SELECT * FROM \"SYS\".\"TABLES\" WHERE ` + tablesCondition;\n const columnsSql = `SELECT * FROM \"SYS\".\"TABLE_COLUMNS\" WHERE ` + tablesCondition + ` ORDER BY \"POSITION\"`;\n\n const constraintsCondition = tableNames.map(tableName => {\n let [schema, name] = tableName.split(\".\");\n if (!name) {\n name = schema;\n schema = this.driver.options.schema || currentSchema;\n }\n return `(\"SCHEMA_NAME\" = '${schema}' AND \"TABLE_NAME\" = '${name}')`;\n }).join(\" OR \");\n\n const constraintsSql = `SELECT * FROM \"SYS\".\"CONSTRAINTS\" WHERE (${constraintsCondition}) ORDER BY \"POSITION\"`;\n\n const indicesCondition = tableNames.map(tableName => {\n let [schema, name] = tableName.split(\".\");\n if (!name) {\n name = schema;\n schema = this.driver.options.schema || currentSchema;\n }\n return `(\"I\".\"SCHEMA_NAME\" = '${schema}' AND \"I\".\"TABLE_NAME\" = '${name}')`;\n }).join(\" OR \");\n // excluding primary key and autogenerated fulltext indices\n const indicesSql = `SELECT \"I\".\"INDEX_TYPE\", \"I\".\"SCHEMA_NAME\", \"I\".\"TABLE_NAME\", \"I\".\"INDEX_NAME\", \"IC\".\"COLUMN_NAME\", \"I\".\"CONSTRAINT\" ` +\n `FROM \"SYS\".\"INDEXES\" \"I\" INNER JOIN \"SYS\".\"INDEX_COLUMNS\" \"IC\" ON \"IC\".\"INDEX_OID\" = \"I\".\"INDEX_OID\" ` +\n `WHERE (${indicesCondition}) AND (\"I\".\"CONSTRAINT\" IS NULL OR \"I\".\"CONSTRAINT\" != 'PRIMARY KEY') AND \"I\".\"INDEX_NAME\" NOT LIKE '%_SYS_FULLTEXT_%' ORDER BY \"IC\".\"POSITION\"`;\n\n const foreignKeysCondition = tableNames.map(tableName => {\n let [schema, name] = tableName.split(\".\");\n if (!name) {\n name = schema;\n schema = this.driver.options.schema || currentSchema;\n }\n return `(\"SCHEMA_NAME\" = '${schema}' AND \"TABLE_NAME\" = '${name}')`;\n }).join(\" OR \");\n const foreignKeysSql = `SELECT * FROM \"SYS\".\"REFERENTIAL_CONSTRAINTS\" WHERE (${foreignKeysCondition}) ORDER BY \"POSITION\"`;\n const [dbTables, dbColumns, dbConstraints, dbIndices, dbForeignKeys]: ObjectLiteral[][] = await Promise.all([\n this.query(tablesSql),\n this.query(columnsSql),\n this.query(constraintsSql),\n this.query(indicesSql),\n this.query(foreignKeysSql),\n ]);\n\n // if tables were not found in the db, no need to proceed\n if (!dbTables.length)\n return [];\n\n // create tables for loaded tables\n return Promise.all(dbTables.map(async dbTable => {\n const table = new Table();\n\n // We do not need to join schema name, when database is by default.\n // In this case we need local variable `tableFullName` for below comparision.\n const schema = dbTable[\"SCHEMA_NAME\"] === currentSchema && !this.driver.options.schema ? undefined : dbTable[\"SCHEMA_NAME\"];\n table.name = this.driver.buildTableName(dbTable[\"TABLE_NAME\"], schema);\n const tableFullName = this.driver.buildTableName(dbTable[\"TABLE_NAME\"], dbTable[\"SCHEMA_NAME\"]);\n\n // create columns from the loaded columns\n table.columns = await Promise.all(dbColumns\n .filter(dbColumn => this.driver.buildTableName(dbColumn[\"TABLE_NAME\"], dbColumn[\"SCHEMA_NAME\"]) === tableFullName)\n .map(async dbColumn => {\n\n const columnConstraints = dbConstraints.filter(dbConstraint => {\n return this.driver.buildTableName(dbConstraint[\"TABLE_NAME\"], dbConstraint[\"SCHEMA_NAME\"]) === tableFullName && dbConstraint[\"COLUMN_NAME\"] === dbColumn[\"COLUMN_NAME\"];\n });\n\n const columnUniqueIndex = dbIndices.find(dbIndex => {\n const indexTableFullName = this.driver.buildTableName(dbIndex[\"TABLE_NAME\"], dbIndex[\"SCHEMA_NAME\"]);\n if (indexTableFullName !== tableFullName) {\n return false;\n }\n\n // Index is not for this column\n if (dbIndex[\"COLUMN_NAME\"] !== dbColumn[\"COLUMN_NAME\"]) {\n return false;\n }\n\n return dbIndex[\"CONSTRAINT\"] && dbIndex[\"CONSTRAINT\"].indexOf(\"UNIQUE\") !== -1;\n });\n\n const tableMetadata = this.connection.entityMetadatas.find(metadata => metadata.tablePath === table.name);\n const hasIgnoredIndex = columnUniqueIndex && tableMetadata && tableMetadata.indices\n .some(index => index.name === columnUniqueIndex[\"INDEX_NAME\"] && index.synchronize === false);\n\n const isConstraintComposite = columnUniqueIndex\n ? !!dbIndices.find(dbIndex => dbIndex[\"INDEX_NAME\"] === columnUniqueIndex[\"INDEX_NAME\"] && dbIndex[\"COLUMN_NAME\"] !== dbColumn[\"COLUMN_NAME\"])\n : false;\n\n const tableColumn = new TableColumn();\n tableColumn.name = dbColumn[\"COLUMN_NAME\"];\n tableColumn.type = dbColumn[\"DATA_TYPE_NAME\"].toLowerCase();\n\n if (tableColumn.type === \"dec\" || tableColumn.type === \"decimal\") {\n // If one of these properties was set, and another was not, Postgres sets '0' in to unspecified property\n // we set 'undefined' in to unspecified property to avoid changing column on sync\n if (dbColumn[\"LENGTH\"] !== null && !this.isDefaultColumnPrecision(table, tableColumn, dbColumn[\"LENGTH\"])) {\n tableColumn.precision = dbColumn[\"LENGTH\"];\n } else if (dbColumn[\"SCALE\"] !== null && !this.isDefaultColumnScale(table, tableColumn, dbColumn[\"SCALE\"])) {\n tableColumn.precision = undefined;\n }\n if (dbColumn[\"SCALE\"] !== null && !this.isDefaultColumnScale(table, tableColumn, dbColumn[\"SCALE\"])) {\n tableColumn.scale = dbColumn[\"SCALE\"];\n } else if (dbColumn[\"LENGTH\"] !== null && !this.isDefaultColumnPrecision(table, tableColumn, dbColumn[\"LENGTH\"])) {\n tableColumn.scale = undefined;\n }\n }\n\n if (dbColumn[\"DATA_TYPE_NAME\"].toLowerCase() === \"array\") {\n tableColumn.isArray = true;\n tableColumn.type = dbColumn[\"CS_DATA_TYPE_NAME\"].toLowerCase();\n }\n\n // check only columns that have length property\n if (this.driver.withLengthColumnTypes.indexOf(tableColumn.type as ColumnType) !== -1 && dbColumn[\"LENGTH\"]) {\n const length = dbColumn[\"LENGTH\"].toString();\n tableColumn.length = !this.isDefaultColumnLength(table, tableColumn, length) ? length : \"\";\n }\n tableColumn.isUnique = !!columnUniqueIndex && !hasIgnoredIndex && !isConstraintComposite;\n tableColumn.isNullable = dbColumn[\"IS_NULLABLE\"] === \"TRUE\";\n tableColumn.isPrimary = !!columnConstraints.find(constraint => constraint[\"IS_PRIMARY_KEY\"] === \"TRUE\");\n tableColumn.isGenerated = dbColumn[\"GENERATION_TYPE\"] === \"ALWAYS AS IDENTITY\";\n if (tableColumn.isGenerated)\n tableColumn.generationStrategy = \"increment\";\n\n if (dbColumn[\"DEFAULT_VALUE\"] === null\n || dbColumn[\"DEFAULT_VALUE\"] === undefined) {\n tableColumn.default = undefined;\n\n } else {\n if (tableColumn.type === \"char\" || tableColumn.type === \"nchar\" || tableColumn.type === \"varchar\" ||\n tableColumn.type === \"nvarchar\" || tableColumn.type === \"alphanum\" || tableColumn.type === \"shorttext\") {\n tableColumn.default = `'${dbColumn[\"DEFAULT_VALUE\"]}'`;\n } else if (tableColumn.type === \"boolean\") {\n tableColumn.default = dbColumn[\"DEFAULT_VALUE\"] === \"1\" ? \"true\" : \"false\";\n } else {\n tableColumn.default = dbColumn[\"DEFAULT_VALUE\"];\n }\n }\n tableColumn.comment = \"\"; // dbColumn[\"COLUMN_COMMENT\"];\n if (dbColumn[\"character_set_name\"])\n tableColumn.charset = dbColumn[\"character_set_name\"];\n if (dbColumn[\"collation_name\"])\n tableColumn.collation = dbColumn[\"collation_name\"];\n return tableColumn;\n }));\n\n // find check constraints of table, group them by constraint name and build TableCheck.\n const tableCheckConstraints = OrmUtils.uniq(dbConstraints.filter(dbConstraint => {\n return this.driver.buildTableName(dbConstraint[\"TABLE_NAME\"], dbConstraint[\"SCHEMA_NAME\"]) === tableFullName\n && dbConstraint[\"CHECK_CONDITION\"] !== null && dbConstraint[\"CHECK_CONDITION\"] !== undefined;\n }), dbConstraint => dbConstraint[\"CONSTRAINT_NAME\"]);\n\n table.checks = tableCheckConstraints.map(constraint => {\n const checks = dbConstraints.filter(dbC => dbC[\"CONSTRAINT_NAME\"] === constraint[\"CONSTRAINT_NAME\"]);\n return new TableCheck({\n name: constraint[\"CONSTRAINT_NAME\"],\n columnNames: checks.map(c => c[\"COLUMN_NAME\"]),\n expression: constraint[\"CHECK_CONDITION\"],\n });\n });\n\n // find foreign key constraints of table, group them by constraint name and build TableForeignKey.\n const tableForeignKeyConstraints = OrmUtils.uniq(dbForeignKeys.filter(dbForeignKey => {\n return this.driver.buildTableName(dbForeignKey[\"TABLE_NAME\"], dbForeignKey[\"SCHEMA_NAME\"]) === tableFullName;\n }), dbForeignKey => dbForeignKey[\"CONSTRAINT_NAME\"]);\n\n table.foreignKeys = tableForeignKeyConstraints.map(dbForeignKey => {\n const foreignKeys = dbForeignKeys.filter(dbFk => dbFk[\"CONSTRAINT_NAME\"] === dbForeignKey[\"CONSTRAINT_NAME\"]);\n\n // if referenced table located in currently used schema, we don't need to concat schema name to table name.\n const schema = dbForeignKey[\"REFERENCED_SCHEMA_NAME\"] === currentSchema ? undefined : dbForeignKey[\"REFERENCED_SCHEMA_NAME\"];\n const referencedTableName = this.driver.buildTableName(dbForeignKey[\"REFERENCED_TABLE_NAME\"], schema);\n\n return new TableForeignKey({\n name: dbForeignKey[\"CONSTRAINT_NAME\"],\n columnNames: foreignKeys.map(dbFk => dbFk[\"COLUMN_NAME\"]),\n referencedTableName: referencedTableName,\n referencedColumnNames: foreignKeys.map(dbFk => dbFk[\"REFERENCED_COLUMN_NAME\"]),\n onDelete: dbForeignKey[\"DELETE_RULE\"] === \"RESTRICT\" ? \"NO ACTION\" : dbForeignKey[\"DELETE_RULE\"],\n onUpdate: dbForeignKey[\"UPDATE_RULE\"] === \"RESTRICT\" ? \"NO ACTION\" : dbForeignKey[\"UPDATE_RULE\"],\n });\n });\n\n // find index constraints of table, group them by constraint name and build TableIndex.\n const tableIndexConstraints = OrmUtils.uniq(dbIndices.filter(dbIndex => {\n return this.driver.buildTableName(dbIndex[\"TABLE_NAME\"], dbIndex[\"SCHEMA_NAME\"]) === tableFullName;\n }), dbIndex => dbIndex[\"INDEX_NAME\"]);\n\n table.indices = tableIndexConstraints.map(constraint => {\n const indices = dbIndices.filter(index => {\n return index[\"SCHEMA_NAME\"] === constraint[\"SCHEMA_NAME\"]\n && index[\"TABLE_NAME\"] === constraint[\"TABLE_NAME\"]\n && index[\"INDEX_NAME\"] === constraint[\"INDEX_NAME\"];\n });\n return new TableIndex(<TableIndexOptions>{\n table: table,\n name: constraint[\"INDEX_NAME\"],\n columnNames: indices.map(i => i[\"COLUMN_NAME\"]),\n isUnique: constraint[\"CONSTRAINT\"] && constraint[\"CONSTRAINT\"].indexOf(\"UNIQUE\") !== -1,\n isFulltext: constraint[\"INDEX_TYPE\"] === \"FULLTEXT\"\n });\n });\n\n return table;\n }));\n }\n\n /**\n * Builds and returns SQL for create table.\n */\n protected createTableSql(table: Table, createForeignKeys?: boolean): Query {\n const columnDefinitions = table.columns.map(column => this.buildCreateColumnSql(column)).join(\", \");\n let sql = `CREATE TABLE ${this.escapePath(table)} (${columnDefinitions}`;\n\n // we create unique indexes instead of unique constraints, because SAP HANA does not have unique constraints.\n // if we mark column as Unique, it means that we create UNIQUE INDEX.\n table.columns\n .filter(column => column.isUnique)\n .forEach(column => {\n const isUniqueIndexExist = table.indices.some(index => {\n return index.columnNames.length === 1 && !!index.isUnique && index.columnNames.indexOf(column.name) !== -1;\n });\n const isUniqueConstraintExist = table.uniques.some(unique => {\n return unique.columnNames.length === 1 && unique.columnNames.indexOf(column.name) !== -1;\n });\n if (!isUniqueIndexExist && !isUniqueConstraintExist)\n table.indices.push(new TableIndex({\n name: this.connection.namingStrategy.uniqueConstraintName(table.name, [column.name]),\n columnNames: [column.name],\n isUnique: true\n }));\n });\n\n // as SAP HANA does not have unique constraints, we must create table indices from table uniques and mark them as unique.\n if (table.uniques.length > 0) {\n table.uniques.forEach(unique => {\n const uniqueExist = table.indices.some(index => index.name === unique.name);\n if (!uniqueExist) {\n table.indices.push(new TableIndex({\n name: unique.name,\n columnNames: unique.columnNames,\n isUnique: true\n }));\n }\n });\n }\n\n if (table.checks.length > 0) {\n const checksSql = table.checks.map(check => {\n const checkName = check.name ? check.name : this.connection.namingStrategy.checkConstraintName(table.name, check.expression!);\n return `CONSTRAINT \"${checkName}\" CHECK (${check.expression})`;\n }).join(\", \");\n\n sql += `, ${checksSql}`;\n }\n\n if (table.foreignKeys.length > 0 && createForeignKeys) {\n const foreignKeysSql = table.foreignKeys.map(fk => {\n const columnNames = fk.columnNames.map(columnName => `\"${columnName}\"`).join(\", \");\n if (!fk.name)\n fk.name = this.connection.namingStrategy.foreignKeyName(table.name, fk.columnNames, fk.referencedTableName, fk.referencedColumnNames);\n const referencedColumnNames = fk.referencedColumnNames.map(columnName => `\"${columnName}\"`).join(\", \");\n\n let constraint = `CONSTRAINT \"${fk.name}\" FOREIGN KEY (${columnNames}) REFERENCES ${this.escapePath(fk.referencedTableName)} (${referencedColumnNames})`;\n // SAP HANA does not have \"NO ACTION\" option for FK's\n if (fk.onDelete) {\n const onDelete = fk.onDelete === \"NO ACTION\" ? \"RESTRICT\" : fk.onDelete;\n constraint += ` ON DELETE ${onDelete}`;\n }\n if (fk.onUpdate) {\n const onUpdate = fk.onUpdate === \"NO ACTION\" ? \"RESTRICT\" : fk.onUpdate;\n constraint += ` ON UPDATE ${onUpdate}`;\n }\n\n return constraint;\n }).join(\", \");\n\n sql += `, ${foreignKeysSql}`;\n }\n\n const primaryColumns = table.columns.filter(column => column.isPrimary);\n if (primaryColumns.length > 0) {\n const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table.name, primaryColumns.map(column => column.name));\n const columnNames = primaryColumns.map(column => `\"${column.name}\"`).join(\", \");\n sql += `, CONSTRAINT \"${primaryKeyName}\" PRIMARY KEY (${columnNames})`;\n }\n\n sql += `)`;\n\n return new Query(sql);\n }\n\n /**\n * Builds drop table sql.\n */\n protected dropTableSql(tableOrName: Table|string, ifExist?: boolean): Query {\n const query = ifExist ? `DROP TABLE IF EXISTS ${this.escapePath(tableOrName)}` : `DROP TABLE ${this.escapePath(tableOrName)}`;\n return new Query(query);\n }\n\n protected createViewSql(view: View): Query {\n if (typeof view.expression === \"string\") {\n return new Query(`CREATE VIEW ${this.escapePath(view)} AS ${view.expression}`);\n } else {\n return new Query(`CREATE VIEW ${this.escapePath(view)} AS ${view.expression(this.connection).getQuery()}`);\n }\n }\n\n protected async insertViewDefinitionSql(view: View): Promise<Query> {\n const currentSchema = await this.getCurrentSchema();\n const splittedName = view.name.split(\".\");\n let schema = this.driver.options.schema || currentSchema;\n let name = view.name;\n if (splittedName.length === 2) {\n schema = splittedName[0];\n name = splittedName[1];\n }\n\n const expression = typeof view.expression === \"string\" ? view.expression.trim() : view.expression(this.connection).getQuery();\n const [query, parameters] = this.connection.createQueryBuilder()\n .insert()\n .into(this.getTypeormMetadataTableName())\n .values({ type: \"VIEW\", schema: schema, name: name, value: expression })\n .getQueryAndParameters();\n\n return new Query(query, parameters);\n }\n\n /**\n * Builds drop view sql.\n */\n protected dropViewSql(viewOrPath: View|string): Query {\n return new Query(`DROP VIEW ${this.escapePath(viewOrPath)}`);\n }\n\n /**\n * Builds remove view sql.\n */\n protected async deleteViewDefinitionSql(viewOrPath: View|string): Promise<Query> {\n const currentSchema = await this.getCurrentSchema();\n const viewName = viewOrPath instanceof View ? viewOrPath.name : viewOrPath;\n const splittedName = viewName.split(\".\");\n let schema = this.driver.options.schema || currentSchema;\n let name = viewName;\n if (splittedName.length === 2) {\n schema = splittedName[0];\n name = splittedName[1];\n }\n\n const qb = this.connection.createQueryBuilder();\n const [query, parameters] = qb.delete()\n .from(this.getTypeormMetadataTableName())\n .where(`${qb.escape(\"type\")} = 'VIEW'`)\n .andWhere(`${qb.escape(\"schema\")} = :schema`, { schema })\n .andWhere(`${qb.escape(\"name\")} = :name`, { name })\n .getQueryAndParameters();\n\n return new Query(query, parameters);\n }\n\n protected addColumnSql(table: Table, column: TableColumn): string {\n return `ALTER TABLE ${this.escapePath(table)} ADD (${this.buildCreateColumnSql(column)})`;\n }\n\n protected dropColumnSql(table: Table, column: TableColumn): string {\n return `ALTER TABLE ${this.escapePath(table)} DROP (\"${column.name}\")`;\n }\n\n /**\n * Builds create index sql.\n */\n protected createIndexSql(table: Table, index: TableIndex): Query {\n const columns = index.columnNames.map(columnName => `\"${columnName}\"`).join(\", \");\n let indexType = \"\";\n if (index.isUnique) {\n indexType += \"UNIQUE \";\n }\n if (index.isFulltext) {\n indexType += \"FULLTEXT \";\n }\n\n return new Query(`CREATE ${indexType}INDEX \"${index.name}\" ON ${this.escapePath(table)} (${columns}) ${index.where ? \"WHERE \" + index.where : \"\"}`);\n }\n\n /**\n * Builds drop index sql.\n */\n protected dropIndexSql(table: Table, indexOrName: TableIndex|string): Query {\n let indexName = indexOrName instanceof TableIndex ? indexOrName.name : indexOrName;\n const parsedTableName = this.parseTableName(table);\n if (parsedTableName.schema === \"current_schema\") {\n return new Query(`DROP INDEX \"${indexName}\"`);\n } else {\n return new Query(`DROP INDEX \"${parsedTableName.schema.replace(/'/g, \"\")}\".\"${indexName}\"`);\n }\n }\n\n /**\n * Builds create primary key sql.\n */\n protected createPrimaryKeySql(table: Table, columnNames: string[]): Query {\n const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table.name, columnNames);\n const columnNamesString = columnNames.map(columnName => `\"${columnName}\"`).join(\", \");\n return new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${primaryKeyName}\" PRIMARY KEY (${columnNamesString})`);\n }\n\n /**\n * Builds drop primary key sql.\n */\n protected dropPrimaryKeySql(table: Table): Query {\n const columnNames = table.primaryColumns.map(column => column.name);\n const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table.name, columnNames);\n return new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${primaryKeyName}\"`);\n }\n\n /**\n * Builds create check constraint sql.\n */\n protected createCheckConstraintSql(table: Table, checkConstraint: TableCheck): Query {\n return new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${checkConstraint.name}\" CHECK (${checkConstraint.expression})`);\n }\n\n /**\n * Builds drop check constraint sql.\n */\n protected dropCheckConstraintSql(table: Table, checkOrName: TableCheck|string): Query {\n const checkName = checkOrName instanceof TableCheck ? checkOrName.name : checkOrName;\n return new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${checkName}\"`);\n }\n\n /**\n * Builds create foreign key sql.\n */\n protected createForeignKeySql(tableOrName: Table|string, foreignKey: TableForeignKey): Query {\n const columnNames = foreignKey.columnNames.map(column => `\"` + column + `\"`).join(\", \");\n const referencedColumnNames = foreignKey.referencedColumnNames.map(column => `\"` + column + `\"`).join(\",\");\n let sql = `ALTER TABLE ${this.escapePath(tableOrName)} ADD CONSTRAINT \"${foreignKey.name}\" FOREIGN KEY (${columnNames}) ` +\n `REFERENCES ${this.escapePath(foreignKey.referencedTableName)}(${referencedColumnNames})`;\n\n // SAP HANA does not have \"NO ACTION\" option for FK's\n if (foreignKey.onDelete) {\n const onDelete = foreignKey.onDelete === \"NO ACTION\" ? \"RESTRICT\" : foreignKey.onDelete;\n sql += ` ON DELETE ${onDelete}`;\n }\n if (foreignKey.onUpdate) {\n const onUpdate = foreignKey.onUpdate === \"NO ACTION\" ? \"RESTRICT\" : foreignKey.onUpdate;\n sql += ` ON UPDATE ${onUpdate}`;\n }\n\n return new Query(sql);\n }\n\n /**\n * Builds drop foreign key sql.\n */\n protected dropForeignKeySql(tableOrName: Table|string, foreignKeyOrName: TableForeignKey|string): Query {\n const foreignKeyName = foreignKeyOrName instanceof TableForeignKey ? foreignKeyOrName.name : foreignKeyOrName;\n return new Query(`ALTER TABLE ${this.escapePath(tableOrName)} DROP CONSTRAINT \"${foreignKeyName}\"`);\n }\n\n /**\n * Escapes given table or view path.\n */\n protected escapePath(target: Table|View|string, disableEscape?: boolean): string {\n let tableName = target instanceof Table || target instanceof View ? target.name : target;\n tableName = tableName.indexOf(\".\") === -1 && this.driver.options.schema ? `${this.driver.options.schema}.${tableName}` : tableName;\n\n return tableName.split(\".\").map(i => {\n return disableEscape ? i : `\"${i}\"`;\n }).join(\".\");\n }\n\n /**\n * Returns object with table schema and table name.\n */\n protected parseTableName(target: Table|string) {\n const tableName = target instanceof Table ? target.name : target;\n if (tableName.indexOf(\".\") === -1) {\n return {\n schema: this.driver.options.schema ? `'${this.driver.options.schema}'` : \"current_schema\",\n tableName: `'${tableName}'`\n };\n } else {\n return {\n schema: `'${tableName.split(\".\")[0]}'`,\n tableName: `'${tableName.split(\".\")[1]}'`\n };\n }\n }\n\n /**\n * Concat database name and schema name to the foreign key name.\n * Needs because FK name is relevant to the schema and database.\n */\n protected buildForeignKeyName(fkName: string, schemaName: string|undefined, dbName: string|undefined): string {\n let joinedFkName = fkName;\n if (schemaName)\n joinedFkName = schemaName + \".\" + joinedFkName;\n if (dbName)\n joinedFkName = dbName + \".\" + joinedFkName;\n\n return joinedFkName;\n }\n\n /**\n * Removes parenthesis around default value.\n * Sql server returns default value with parenthesis around, e.g.\n * ('My text') - for string\n * ((1)) - for number\n * (newsequentialId()) - for function\n */\n protected removeParenthesisFromDefault(defaultValue: any): any {\n if (defaultValue.substr(0, 1) !== \"(\")\n return defaultValue;\n const normalizedDefault = defaultValue.substr(1, defaultValue.lastIndexOf(\")\") - 1);\n return this.removeParenthesisFromDefault(normalizedDefault);\n }\n\n /**\n * Builds a query for create column.\n */\n protected buildCreateColumnSql(column: TableColumn) {\n let c = `\"${column.name}\" ` + this.connection.driver.createFullType(column);\n if (column.charset)\n c += \" CHARACTER SET \" + column.charset;\n if (column.collation)\n c += \" COLLATE \" + column.collation;\n if (column.default !== undefined && column.default !== null) // DEFAULT must be placed before NOT NULL\n c += \" DEFAULT \" + column.default;\n if (column.isNullable !== true && !column.isGenerated) // NOT NULL is not supported with GENERATED\n c += \" NOT NULL\";\n if (column.isGenerated === true && column.generationStrategy === \"increment\")\n c += \" GENERATED ALWAYS AS IDENTITY\";\n\n return c;\n }\n\n}\n"],"sourceRoot":"../.."}