typeorm 0.3.6-dev.1197d1d → 0.3.6-dev.2d8afbe

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 (226) hide show
  1. package/README.md +33 -13
  2. package/browser/cache/DbQueryResultCache.js +9 -1
  3. package/browser/cache/DbQueryResultCache.js.map +1 -1
  4. package/browser/cache/RedisQueryResultCache.js +3 -0
  5. package/browser/cache/RedisQueryResultCache.js.map +1 -1
  6. package/browser/data-source/DataSourceOptions.d.ts +2 -1
  7. package/browser/data-source/DataSourceOptions.js.map +1 -1
  8. package/browser/decorator/Index.js +1 -0
  9. package/browser/decorator/Index.js.map +1 -1
  10. package/browser/decorator/columns/PrimaryColumn.js +4 -1
  11. package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
  12. package/browser/decorator/options/ColumnOptions.d.ts +2 -2
  13. package/browser/decorator/options/ColumnOptions.js.map +1 -1
  14. package/browser/decorator/options/IndexOptions.d.ts +8 -0
  15. package/browser/decorator/options/IndexOptions.js.map +1 -1
  16. package/browser/driver/DriverFactory.js +4 -0
  17. package/browser/driver/DriverFactory.js.map +1 -1
  18. package/browser/driver/cockroachdb/CockroachDriver.js +4 -1
  19. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  20. package/browser/driver/cockroachdb/CockroachQueryRunner.js +133 -11
  21. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  22. package/browser/driver/mysql/MysqlDriver.d.ts +1 -0
  23. package/browser/driver/mysql/MysqlDriver.js +94 -23
  24. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  25. package/browser/driver/mysql/MysqlQueryRunner.js +203 -24
  26. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  27. package/browser/driver/oracle/OracleDriver.js +79 -15
  28. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  29. package/browser/driver/oracle/OracleQueryRunner.js +118 -21
  30. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  31. package/browser/driver/postgres/PostgresDriver.js +95 -18
  32. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  33. package/browser/driver/postgres/PostgresQueryRunner.js +60 -38
  34. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  35. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +17 -0
  36. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js +3 -0
  37. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -0
  38. package/browser/driver/spanner/SpannerConnectionOptions.d.ts +120 -0
  39. package/browser/driver/spanner/SpannerConnectionOptions.js +3 -0
  40. package/browser/driver/spanner/SpannerConnectionOptions.js.map +1 -0
  41. package/browser/driver/spanner/SpannerDriver.d.ts +241 -0
  42. package/browser/driver/spanner/SpannerDriver.js +604 -0
  43. package/browser/driver/spanner/SpannerDriver.js.map +1 -0
  44. package/browser/driver/spanner/SpannerQueryRunner.d.ts +350 -0
  45. package/browser/driver/spanner/SpannerQueryRunner.js +1445 -0
  46. package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -0
  47. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +21 -16
  48. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  49. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +165 -20
  50. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  51. package/browser/driver/sqlserver/SqlServerDriver.d.ts +3 -1
  52. package/browser/driver/sqlserver/SqlServerDriver.js +99 -26
  53. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  54. package/browser/driver/sqlserver/SqlServerQueryRunner.js +153 -17
  55. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  56. package/browser/driver/types/ColumnTypes.d.ts +1 -1
  57. package/browser/driver/types/ColumnTypes.js.map +1 -1
  58. package/browser/driver/types/DatabaseType.d.ts +1 -1
  59. package/browser/driver/types/DatabaseType.js.map +1 -1
  60. package/browser/entity-schema/EntitySchemaColumnOptions.d.ts +2 -2
  61. package/browser/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  62. package/browser/entity-schema/EntitySchemaIndexOptions.d.ts +8 -0
  63. package/browser/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
  64. package/browser/entity-schema/EntitySchemaTransformer.js +1 -0
  65. package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
  66. package/browser/find-options/FindOneOptions.d.ts +1 -1
  67. package/browser/find-options/FindOneOptions.js.map +1 -1
  68. package/browser/find-options/FindOptionsUtils.d.ts +2 -1
  69. package/browser/find-options/FindOptionsUtils.js +2 -1
  70. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  71. package/browser/logger/AdvancedConsoleLogger.d.ts +1 -1
  72. package/browser/logger/AdvancedConsoleLogger.js +1 -1
  73. package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
  74. package/browser/metadata/ColumnMetadata.d.ts +2 -2
  75. package/browser/metadata/ColumnMetadata.js.map +1 -1
  76. package/browser/metadata/IndexMetadata.d.ts +8 -0
  77. package/browser/metadata/IndexMetadata.js +9 -0
  78. package/browser/metadata/IndexMetadata.js.map +1 -1
  79. package/browser/metadata-args/IndexMetadataArgs.d.ts +8 -0
  80. package/browser/metadata-args/IndexMetadataArgs.js.map +1 -1
  81. package/browser/metadata-builder/EntityMetadataBuilder.js +13 -6
  82. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  83. package/browser/metadata-builder/EntityMetadataValidator.js +8 -0
  84. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  85. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +13 -6
  86. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  87. package/browser/platform/PlatformTools.js +5 -0
  88. package/browser/platform/PlatformTools.js.map +1 -1
  89. package/browser/query-builder/InsertQueryBuilder.js +15 -3
  90. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  91. package/browser/query-builder/QueryExpressionMap.d.ts +1 -1
  92. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  93. package/browser/query-builder/SelectQueryBuilder.d.ts +1 -1
  94. package/browser/query-builder/SelectQueryBuilder.js +25 -4
  95. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  96. package/browser/query-builder/UpdateQueryBuilder.js +18 -7
  97. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  98. package/browser/query-runner/BaseQueryRunner.d.ts +10 -0
  99. package/browser/query-runner/BaseQueryRunner.js +25 -1
  100. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  101. package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +6 -2
  102. package/browser/schema-builder/RdbmsSchemaBuilder.js +26 -6
  103. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  104. package/browser/schema-builder/options/TableColumnOptions.d.ts +2 -2
  105. package/browser/schema-builder/options/TableColumnOptions.js.map +1 -1
  106. package/browser/schema-builder/options/TableIndexOptions.d.ts +8 -0
  107. package/browser/schema-builder/options/TableIndexOptions.js.map +1 -1
  108. package/browser/schema-builder/table/TableColumn.d.ts +2 -2
  109. package/browser/schema-builder/table/TableColumn.js.map +1 -1
  110. package/browser/schema-builder/table/TableIndex.d.ts +8 -0
  111. package/browser/schema-builder/table/TableIndex.js +3 -0
  112. package/browser/schema-builder/table/TableIndex.js.map +1 -1
  113. package/cache/DbQueryResultCache.js +9 -1
  114. package/cache/DbQueryResultCache.js.map +1 -1
  115. package/cache/RedisQueryResultCache.js +3 -0
  116. package/cache/RedisQueryResultCache.js.map +1 -1
  117. package/commands/InitCommand.js +1 -1
  118. package/commands/InitCommand.js.map +1 -1
  119. package/data-source/DataSourceOptions.d.ts +2 -1
  120. package/data-source/DataSourceOptions.js.map +1 -1
  121. package/decorator/Index.js +1 -0
  122. package/decorator/Index.js.map +1 -1
  123. package/decorator/columns/PrimaryColumn.js +4 -1
  124. package/decorator/columns/PrimaryColumn.js.map +1 -1
  125. package/decorator/options/ColumnOptions.d.ts +2 -2
  126. package/decorator/options/ColumnOptions.js.map +1 -1
  127. package/decorator/options/IndexOptions.d.ts +8 -0
  128. package/decorator/options/IndexOptions.js.map +1 -1
  129. package/driver/DriverFactory.js +4 -0
  130. package/driver/DriverFactory.js.map +1 -1
  131. package/driver/cockroachdb/CockroachDriver.js +4 -1
  132. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  133. package/driver/cockroachdb/CockroachQueryRunner.js +133 -11
  134. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  135. package/driver/mysql/MysqlDriver.d.ts +1 -0
  136. package/driver/mysql/MysqlDriver.js +94 -23
  137. package/driver/mysql/MysqlDriver.js.map +1 -1
  138. package/driver/mysql/MysqlQueryRunner.js +203 -24
  139. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  140. package/driver/oracle/OracleDriver.js +79 -15
  141. package/driver/oracle/OracleDriver.js.map +1 -1
  142. package/driver/oracle/OracleQueryRunner.js +118 -21
  143. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  144. package/driver/postgres/PostgresDriver.js +95 -18
  145. package/driver/postgres/PostgresDriver.js.map +1 -1
  146. package/driver/postgres/PostgresQueryRunner.js +60 -38
  147. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  148. package/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +17 -0
  149. package/driver/spanner/SpannerConnectionCredentialsOptions.js +4 -0
  150. package/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -0
  151. package/driver/spanner/SpannerConnectionOptions.d.ts +120 -0
  152. package/driver/spanner/SpannerConnectionOptions.js +4 -0
  153. package/driver/spanner/SpannerConnectionOptions.js.map +1 -0
  154. package/driver/spanner/SpannerDriver.d.ts +241 -0
  155. package/driver/spanner/SpannerDriver.js +608 -0
  156. package/driver/spanner/SpannerDriver.js.map +1 -0
  157. package/driver/spanner/SpannerQueryRunner.d.ts +350 -0
  158. package/driver/spanner/SpannerQueryRunner.js +1449 -0
  159. package/driver/spanner/SpannerQueryRunner.js.map +1 -0
  160. package/driver/sqlite-abstract/AbstractSqliteDriver.js +21 -16
  161. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  162. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +165 -20
  163. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  164. package/driver/sqlserver/SqlServerDriver.d.ts +3 -1
  165. package/driver/sqlserver/SqlServerDriver.js +99 -26
  166. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  167. package/driver/sqlserver/SqlServerQueryRunner.js +153 -17
  168. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  169. package/driver/types/ColumnTypes.d.ts +1 -1
  170. package/driver/types/ColumnTypes.js.map +1 -1
  171. package/driver/types/DatabaseType.d.ts +1 -1
  172. package/driver/types/DatabaseType.js.map +1 -1
  173. package/entity-schema/EntitySchemaColumnOptions.d.ts +2 -2
  174. package/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  175. package/entity-schema/EntitySchemaIndexOptions.d.ts +8 -0
  176. package/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
  177. package/entity-schema/EntitySchemaTransformer.js +1 -0
  178. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  179. package/find-options/FindOneOptions.d.ts +1 -1
  180. package/find-options/FindOneOptions.js.map +1 -1
  181. package/find-options/FindOptionsUtils.d.ts +2 -1
  182. package/find-options/FindOptionsUtils.js +2 -1
  183. package/find-options/FindOptionsUtils.js.map +1 -1
  184. package/logger/AdvancedConsoleLogger.d.ts +1 -1
  185. package/logger/AdvancedConsoleLogger.js +1 -1
  186. package/logger/AdvancedConsoleLogger.js.map +1 -1
  187. package/metadata/ColumnMetadata.d.ts +2 -2
  188. package/metadata/ColumnMetadata.js.map +1 -1
  189. package/metadata/IndexMetadata.d.ts +8 -0
  190. package/metadata/IndexMetadata.js +9 -0
  191. package/metadata/IndexMetadata.js.map +1 -1
  192. package/metadata-args/IndexMetadataArgs.d.ts +8 -0
  193. package/metadata-args/IndexMetadataArgs.js.map +1 -1
  194. package/metadata-builder/EntityMetadataBuilder.js +13 -6
  195. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  196. package/metadata-builder/EntityMetadataValidator.js +8 -0
  197. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  198. package/metadata-builder/JunctionEntityMetadataBuilder.js +13 -6
  199. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  200. package/package.json +1 -1
  201. package/platform/PlatformTools.js +5 -0
  202. package/platform/PlatformTools.js.map +1 -1
  203. package/query-builder/InsertQueryBuilder.js +15 -3
  204. package/query-builder/InsertQueryBuilder.js.map +1 -1
  205. package/query-builder/QueryExpressionMap.d.ts +1 -1
  206. package/query-builder/QueryExpressionMap.js.map +1 -1
  207. package/query-builder/SelectQueryBuilder.d.ts +1 -1
  208. package/query-builder/SelectQueryBuilder.js +25 -4
  209. package/query-builder/SelectQueryBuilder.js.map +1 -1
  210. package/query-builder/UpdateQueryBuilder.js +18 -7
  211. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  212. package/query-runner/BaseQueryRunner.d.ts +10 -0
  213. package/query-runner/BaseQueryRunner.js +25 -1
  214. package/query-runner/BaseQueryRunner.js.map +1 -1
  215. package/schema-builder/RdbmsSchemaBuilder.d.ts +6 -2
  216. package/schema-builder/RdbmsSchemaBuilder.js +26 -6
  217. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  218. package/schema-builder/options/TableColumnOptions.d.ts +2 -2
  219. package/schema-builder/options/TableColumnOptions.js.map +1 -1
  220. package/schema-builder/options/TableIndexOptions.d.ts +8 -0
  221. package/schema-builder/options/TableIndexOptions.js.map +1 -1
  222. package/schema-builder/table/TableColumn.d.ts +2 -2
  223. package/schema-builder/table/TableColumn.js.map +1 -1
  224. package/schema-builder/table/TableIndex.d.ts +8 -0
  225. package/schema-builder/table/TableIndex.js +3 -0
  226. package/schema-builder/table/TableIndex.js.map +1 -1
@@ -383,6 +383,30 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
383
383
  downQueries.push(this.dropIndexSql(table, index));
384
384
  });
385
385
  }
386
+ // if table have column with generated type, we must add the expression to the metadata table
387
+ const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
388
+ for (const column of generatedColumns) {
389
+ const currentSchema = await this.getCurrentSchema();
390
+ let { schema } = this.driver.parseTableName(table);
391
+ if (!schema) {
392
+ schema = currentSchema;
393
+ }
394
+ const insertQuery = this.insertTypeormMetadataSql({
395
+ schema: schema,
396
+ table: table.name,
397
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
398
+ name: column.name,
399
+ value: column.asExpression,
400
+ });
401
+ const deleteQuery = this.deleteTypeormMetadataSql({
402
+ schema: schema,
403
+ table: table.name,
404
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
405
+ name: column.name,
406
+ });
407
+ upQueries.push(insertQuery);
408
+ downQueries.push(deleteQuery);
409
+ }
386
410
  await this.executeQueries(upQueries, downQueries);
387
411
  }
388
412
  /**
@@ -420,6 +444,30 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
420
444
  upQueries.push(new Query_1.Query(`DROP SEQUENCE ${this.escapePath(this.buildSequencePath(table, column))}`));
421
445
  downQueries.push(new Query_1.Query(`CREATE SEQUENCE ${this.escapePath(this.buildSequencePath(table, column))}`));
422
446
  });
447
+ // if table had columns with generated type, we must remove the expression from the metadata table
448
+ const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
449
+ for (const column of generatedColumns) {
450
+ const currentSchema = await this.getCurrentSchema();
451
+ let { schema } = this.driver.parseTableName(table);
452
+ if (!schema) {
453
+ schema = currentSchema;
454
+ }
455
+ const deleteQuery = this.deleteTypeormMetadataSql({
456
+ schema: schema,
457
+ table: table.name,
458
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
459
+ name: column.name,
460
+ });
461
+ const insertQuery = this.insertTypeormMetadataSql({
462
+ schema: schema,
463
+ table: table.name,
464
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
465
+ name: column.name,
466
+ value: column.asExpression,
467
+ });
468
+ upQueries.push(deleteQuery);
469
+ downQueries.push(insertQuery);
470
+ }
423
471
  await this.executeQueries(upQueries, downQueries);
424
472
  }
425
473
  /**
@@ -547,6 +595,28 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
547
595
  upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${pkName}" PRIMARY KEY (${columnNames})`));
548
596
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${pkName}"`));
549
597
  }
598
+ if (column.generatedType && column.asExpression) {
599
+ const currentSchema = await this.getCurrentSchema();
600
+ let { schema } = this.driver.parseTableName(table);
601
+ if (!schema) {
602
+ schema = currentSchema;
603
+ }
604
+ const insertQuery = this.insertTypeormMetadataSql({
605
+ schema: schema,
606
+ table: table.name,
607
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
608
+ name: column.name,
609
+ value: column.asExpression,
610
+ });
611
+ const deleteQuery = this.deleteTypeormMetadataSql({
612
+ schema: schema,
613
+ table: table.name,
614
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
615
+ name: column.name,
616
+ });
617
+ upQueries.push(insertQuery);
618
+ downQueries.push(deleteQuery);
619
+ }
550
620
  // create column index
551
621
  const columnIndex = clonedTable.indices.find((index) => index.columnNames.length === 1 &&
552
622
  index.columnNames[0] === column.name);
@@ -631,7 +701,9 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
631
701
  if (!oldColumn)
632
702
  throw new error_1.TypeORMError(`Column "${oldTableColumnOrName}" was not found in the "${table.name}" table.`);
633
703
  if (oldColumn.type !== newColumn.type ||
634
- oldColumn.length !== newColumn.length) {
704
+ oldColumn.length !== newColumn.length ||
705
+ oldColumn.generatedType !== newColumn.generatedType ||
706
+ oldColumn.asExpression !== newColumn.asExpression) {
635
707
  // To avoid data conversion, we just recreate column
636
708
  await this.dropColumn(table, oldColumn);
637
709
  await this.addColumn(table, newColumn);
@@ -904,6 +976,28 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
904
976
  upQueries.push(new Query_1.Query(`DROP SEQUENCE ${this.escapePath(this.buildSequencePath(table, column))}`));
905
977
  downQueries.push(new Query_1.Query(`CREATE SEQUENCE ${this.escapePath(this.buildSequencePath(table, column))}`));
906
978
  }
979
+ if (column.generatedType && column.asExpression) {
980
+ const currentSchema = await this.getCurrentSchema();
981
+ let { schema } = this.driver.parseTableName(table);
982
+ if (!schema) {
983
+ schema = currentSchema;
984
+ }
985
+ const deleteQuery = this.deleteTypeormMetadataSql({
986
+ schema: schema,
987
+ table: table.name,
988
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
989
+ name: column.name,
990
+ });
991
+ const insertQuery = this.insertTypeormMetadataSql({
992
+ schema: schema,
993
+ table: table.name,
994
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
995
+ name: column.name,
996
+ value: column.asExpression,
997
+ });
998
+ upQueries.push(deleteQuery);
999
+ downQueries.push(insertQuery);
1000
+ }
907
1001
  await this.executeQueries(upQueries, downQueries);
908
1002
  clonedTable.removeColumn(column);
909
1003
  this.replaceCachedTable(table, clonedTable);
@@ -1338,12 +1432,14 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1338
1432
  return `("table_schema" = '${table_schema}' AND "table_name" = '${table_name}')`;
1339
1433
  })
1340
1434
  .join(" OR ");
1341
- const columnsSql = `
1342
- SELECT
1343
- *,
1344
- pg_catalog.col_description(('"' || table_catalog || '"."' || table_schema || '"."' || table_name || '"')::regclass::oid, ordinal_position) as description
1345
- FROM "information_schema"."columns"
1346
- WHERE "is_hidden" = 'NO' AND ` + columnsCondiiton;
1435
+ const columnsSql = `SELECT "columns".*, "attr"."attgenerated" as "generated_type", ` +
1436
+ `pg_catalog.col_description(('"' || table_catalog || '"."' || table_schema || '"."' || table_name || '"')::regclass::oid, ordinal_position) as description ` +
1437
+ `FROM "information_schema"."columns" ` +
1438
+ `LEFT JOIN "pg_class" AS "cls" ON "cls"."relname" = "table_name" ` +
1439
+ `LEFT JOIN "pg_namespace" AS "ns" ON "ns"."oid" = "cls"."relnamespace" AND "ns"."nspname" = "table_schema" ` +
1440
+ `LEFT JOIN "pg_attribute" AS "attr" ON "attr"."attrelid" = "cls"."oid" AND "attr"."attname" = "column_name" AND "attr"."attnum" = "ordinal_position" ` +
1441
+ `WHERE "is_hidden" = 'NO' AND ` +
1442
+ columnsCondiiton;
1347
1443
  const constraintsCondition = dbTables
1348
1444
  .map(({ table_name, table_schema }) => {
1349
1445
  return `("ns"."nspname" = '${table_schema}' AND "t"."relname" = '${table_name}')`;
@@ -1512,6 +1608,27 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1512
1608
  tableColumn.default.replace(/^(-?[\d\.]+)$/, "($1)");
1513
1609
  }
1514
1610
  }
1611
+ if (dbColumn["is_generated"] === "YES" &&
1612
+ dbColumn["generation_expression"]) {
1613
+ tableColumn.generatedType =
1614
+ dbColumn["generated_type"] === "s"
1615
+ ? "STORED"
1616
+ : "VIRTUAL";
1617
+ // We cannot relay on information_schema.columns.generation_expression, because it is formatted different.
1618
+ const asExpressionQuery = await this.selectTypeormMetadataSql({
1619
+ schema: dbTable["table_schema"],
1620
+ table: dbTable["table_name"],
1621
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
1622
+ name: tableColumn.name,
1623
+ });
1624
+ const results = await this.query(asExpressionQuery.query, asExpressionQuery.parameters);
1625
+ if (results[0] && results[0].value) {
1626
+ tableColumn.asExpression = results[0].value;
1627
+ }
1628
+ else {
1629
+ tableColumn.asExpression = "";
1630
+ }
1631
+ }
1515
1632
  tableColumn.comment =
1516
1633
  dbColumn["description"] == null
1517
1634
  ? undefined
@@ -1904,10 +2021,15 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1904
2021
  }
1905
2022
  if (!column.isGenerated)
1906
2023
  c += " " + this.connection.driver.createFullType(column);
1907
- if (column.charset)
1908
- c += ' CHARACTER SET "' + column.charset + '"';
1909
- if (column.collation)
1910
- c += ' COLLATE "' + column.collation + '"';
2024
+ if (column.asExpression) {
2025
+ c += ` AS (${column.asExpression}) ${column.generatedType ? column.generatedType : "VIRTUAL"}`;
2026
+ }
2027
+ else {
2028
+ if (column.charset)
2029
+ c += ' CHARACTER SET "' + column.charset + '"';
2030
+ if (column.collation)
2031
+ c += ' COLLATE "' + column.collation + '"';
2032
+ }
1911
2033
  if (!column.isNullable)
1912
2034
  c += " NOT NULL";
1913
2035
  if (!column.isGenerated &&