typeorm 0.3.6-dev.9d331b1 → 0.3.6-dev.bbdc20f
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -14
- package/browser/cache/DbQueryResultCache.js +9 -1
- package/browser/cache/DbQueryResultCache.js.map +1 -1
- package/browser/cache/RedisQueryResultCache.js +3 -0
- package/browser/cache/RedisQueryResultCache.js.map +1 -1
- package/browser/data-source/DataSourceOptions.d.ts +2 -1
- package/browser/data-source/DataSourceOptions.js.map +1 -1
- package/browser/decorator/Index.js +1 -0
- package/browser/decorator/Index.js.map +1 -1
- package/browser/decorator/columns/PrimaryColumn.js +4 -1
- package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
- package/browser/decorator/options/ColumnOptions.d.ts +10 -2
- package/browser/decorator/options/ColumnOptions.js.map +1 -1
- package/browser/decorator/options/IndexOptions.d.ts +8 -0
- package/browser/decorator/options/IndexOptions.js.map +1 -1
- package/browser/decorator/options/JoinColumnOptions.d.ts +4 -0
- package/browser/decorator/options/JoinColumnOptions.js.map +1 -1
- package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +4 -0
- package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
- package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts +4 -0
- package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
- package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.d.ts +4 -0
- package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
- package/browser/decorator/relations/JoinColumn.js +1 -0
- package/browser/decorator/relations/JoinColumn.js.map +1 -1
- package/browser/driver/DriverFactory.js +4 -0
- package/browser/driver/DriverFactory.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.d.ts +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachDriver.js +4 -1
- package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +3 -3
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +233 -33
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/mongodb/typings.d.ts +5 -5
- package/browser/driver/mongodb/typings.js.map +1 -1
- package/browser/driver/mysql/MysqlDriver.d.ts +1 -0
- package/browser/driver/mysql/MysqlDriver.js +94 -23
- package/browser/driver/mysql/MysqlDriver.js.map +1 -1
- package/browser/driver/mysql/MysqlQueryRunner.js +219 -24
- package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/browser/driver/oracle/OracleDriver.js +79 -15
- package/browser/driver/oracle/OracleDriver.js.map +1 -1
- package/browser/driver/oracle/OracleQueryRunner.d.ts +3 -3
- package/browser/driver/oracle/OracleQueryRunner.js +216 -42
- package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/browser/driver/postgres/PostgresDriver.js +95 -18
- package/browser/driver/postgres/PostgresDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.d.ts +3 -3
- package/browser/driver/postgres/PostgresQueryRunner.js +159 -59
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +17 -0
- package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js +3 -0
- package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -0
- package/browser/driver/spanner/SpannerConnectionOptions.d.ts +120 -0
- package/browser/driver/spanner/SpannerConnectionOptions.js +3 -0
- package/browser/driver/spanner/SpannerConnectionOptions.js.map +1 -0
- package/browser/driver/spanner/SpannerDriver.d.ts +241 -0
- package/browser/driver/spanner/SpannerDriver.js +604 -0
- package/browser/driver/spanner/SpannerDriver.js.map +1 -0
- package/browser/driver/spanner/SpannerQueryRunner.d.ts +350 -0
- package/browser/driver/spanner/SpannerQueryRunner.js +1445 -0
- package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -0
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +65 -16
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +218 -32
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerDriver.d.ts +3 -1
- package/browser/driver/sqlserver/SqlServerDriver.js +99 -26
- package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +3 -3
- package/browser/driver/sqlserver/SqlServerQueryRunner.js +251 -37
- package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.d.ts +1 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.d.ts +2 -2
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.d.ts +2 -2
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.d.ts +2 -2
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -1
- package/browser/driver/types/ColumnTypes.d.ts +1 -1
- package/browser/driver/types/ColumnTypes.js.map +1 -1
- package/browser/driver/types/DatabaseType.d.ts +1 -1
- package/browser/driver/types/DatabaseType.js.map +1 -1
- package/browser/entity-manager/EntityManager.js +1 -1
- package/browser/entity-manager/EntityManager.js.map +1 -1
- package/browser/entity-schema/EntitySchemaColumnOptions.d.ts +6 -2
- package/browser/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaIndexOptions.d.ts +8 -0
- package/browser/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaTransformer.js +3 -0
- package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/browser/find-options/FindOneOptions.d.ts +1 -1
- package/browser/find-options/FindOneOptions.js.map +1 -1
- package/browser/find-options/FindOptionsUtils.d.ts +2 -1
- package/browser/find-options/FindOptionsUtils.js +2 -1
- package/browser/find-options/FindOptionsUtils.js.map +1 -1
- package/browser/logger/AdvancedConsoleLogger.d.ts +1 -1
- package/browser/logger/AdvancedConsoleLogger.js +1 -1
- package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
- package/browser/metadata/ColumnMetadata.d.ts +10 -2
- package/browser/metadata/ColumnMetadata.js +8 -0
- package/browser/metadata/ColumnMetadata.js.map +1 -1
- package/browser/metadata/EntityMetadata.js +1 -1
- package/browser/metadata/EntityMetadata.js.map +1 -1
- package/browser/metadata/ForeignKeyMetadata.d.ts +7 -0
- package/browser/metadata/ForeignKeyMetadata.js +4 -1
- package/browser/metadata/ForeignKeyMetadata.js.map +1 -1
- package/browser/metadata/IndexMetadata.d.ts +8 -0
- package/browser/metadata/IndexMetadata.js +9 -0
- package/browser/metadata/IndexMetadata.js.map +1 -1
- package/browser/metadata-args/IndexMetadataArgs.d.ts +8 -0
- package/browser/metadata-args/IndexMetadataArgs.js.map +1 -1
- package/browser/metadata-args/JoinColumnMetadataArgs.d.ts +4 -0
- package/browser/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataBuilder.js +13 -6
- package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataValidator.js +17 -0
- package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +18 -6
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/RelationJoinColumnBuilder.js +2 -0
- package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/browser/migration/MigrationExecutor.js +1 -1
- package/browser/migration/MigrationExecutor.js.map +1 -1
- package/browser/persistence/SubjectDatabaseEntityLoader.d.ts +1 -1
- package/browser/persistence/SubjectDatabaseEntityLoader.js +1 -1
- package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/browser/persistence/SubjectExecutor.js +1 -1
- package/browser/persistence/SubjectExecutor.js.map +1 -1
- package/browser/persistence/subject-builder/CascadesSubjectBuilder.d.ts +1 -1
- package/browser/persistence/subject-builder/CascadesSubjectBuilder.js +1 -1
- package/browser/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
- package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js +1 -1
- package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
- package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +1 -1
- package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
- package/browser/platform/PlatformTools.js +5 -0
- package/browser/platform/PlatformTools.js.map +1 -1
- package/browser/query-builder/InsertQueryBuilder.js +15 -3
- package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
- package/browser/query-builder/QueryBuilder.d.ts +1 -1
- package/browser/query-builder/QueryBuilder.js +15 -15
- package/browser/query-builder/QueryBuilder.js.map +1 -1
- package/browser/query-builder/QueryExpressionMap.d.ts +2 -2
- package/browser/query-builder/QueryExpressionMap.js +1 -1
- package/browser/query-builder/QueryExpressionMap.js.map +1 -1
- package/browser/query-builder/ReturningResultsEntityUpdator.js +2 -2
- package/browser/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
- package/browser/query-builder/SelectQueryBuilder.d.ts +1 -1
- package/browser/query-builder/SelectQueryBuilder.js +25 -4
- package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
- package/browser/query-builder/UpdateQueryBuilder.js +18 -7
- package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/browser/query-runner/BaseQueryRunner.d.ts +10 -0
- package/browser/query-runner/BaseQueryRunner.js +25 -1
- package/browser/query-runner/BaseQueryRunner.js.map +1 -1
- package/browser/query-runner/QueryRunner.d.ts +2 -2
- package/browser/query-runner/QueryRunner.js.map +1 -1
- package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +6 -2
- package/browser/schema-builder/RdbmsSchemaBuilder.js +26 -6
- package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/browser/schema-builder/options/TableColumnOptions.d.ts +10 -2
- package/browser/schema-builder/options/TableColumnOptions.js.map +1 -1
- package/browser/schema-builder/options/TableForeignKeyOptions.d.ts +1 -1
- package/browser/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
- package/browser/schema-builder/options/TableIndexOptions.d.ts +8 -0
- package/browser/schema-builder/options/TableIndexOptions.js.map +1 -1
- package/browser/schema-builder/table/TableColumn.d.ts +6 -2
- package/browser/schema-builder/table/TableColumn.js +2 -0
- package/browser/schema-builder/table/TableColumn.js.map +1 -1
- package/browser/schema-builder/table/TableIndex.d.ts +8 -0
- package/browser/schema-builder/table/TableIndex.js +3 -0
- package/browser/schema-builder/table/TableIndex.js.map +1 -1
- package/browser/schema-builder/util/TableUtils.js +1 -0
- package/browser/schema-builder/util/TableUtils.js.map +1 -1
- package/browser/util/OrmUtils.d.ts +1 -1
- package/browser/util/OrmUtils.js +4 -4
- package/browser/util/OrmUtils.js.map +1 -1
- package/browser/util/escapeRegExp.d.ts +1 -0
- package/browser/util/escapeRegExp.js +6 -0
- package/browser/util/escapeRegExp.js.map +1 -0
- package/cache/DbQueryResultCache.js +9 -1
- package/cache/DbQueryResultCache.js.map +1 -1
- package/cache/RedisQueryResultCache.js +3 -0
- package/cache/RedisQueryResultCache.js.map +1 -1
- package/commands/InitCommand.js +1 -1
- package/commands/InitCommand.js.map +1 -1
- package/commands/MigrationGenerateCommand.js +3 -2
- package/commands/MigrationGenerateCommand.js.map +1 -1
- package/data-source/DataSourceOptions.d.ts +2 -1
- package/data-source/DataSourceOptions.js.map +1 -1
- package/decorator/Index.js +1 -0
- package/decorator/Index.js.map +1 -1
- package/decorator/columns/PrimaryColumn.js +4 -1
- package/decorator/columns/PrimaryColumn.js.map +1 -1
- package/decorator/options/ColumnOptions.d.ts +10 -2
- package/decorator/options/ColumnOptions.js.map +1 -1
- package/decorator/options/IndexOptions.d.ts +8 -0
- package/decorator/options/IndexOptions.js.map +1 -1
- package/decorator/options/JoinColumnOptions.d.ts +4 -0
- package/decorator/options/JoinColumnOptions.js.map +1 -1
- package/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +4 -0
- package/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
- package/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts +4 -0
- package/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
- package/decorator/options/PrimaryGeneratedColumnUUIDOptions.d.ts +4 -0
- package/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
- package/decorator/relations/JoinColumn.js +1 -0
- package/decorator/relations/JoinColumn.js.map +1 -1
- package/driver/DriverFactory.js +4 -0
- package/driver/DriverFactory.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlDriver.d.ts +1 -1
- package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachDriver.js +4 -1
- package/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.d.ts +3 -3
- package/driver/cockroachdb/CockroachQueryRunner.js +233 -33
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/mongodb/typings.d.ts +5 -5
- package/driver/mongodb/typings.js.map +1 -1
- package/driver/mysql/MysqlDriver.d.ts +1 -0
- package/driver/mysql/MysqlDriver.js +94 -23
- package/driver/mysql/MysqlDriver.js.map +1 -1
- package/driver/mysql/MysqlQueryRunner.js +219 -24
- package/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/driver/oracle/OracleDriver.js +79 -15
- package/driver/oracle/OracleDriver.js.map +1 -1
- package/driver/oracle/OracleQueryRunner.d.ts +3 -3
- package/driver/oracle/OracleQueryRunner.js +216 -42
- package/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/driver/postgres/PostgresDriver.js +95 -18
- package/driver/postgres/PostgresDriver.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.d.ts +3 -3
- package/driver/postgres/PostgresQueryRunner.js +159 -59
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +17 -0
- package/driver/spanner/SpannerConnectionCredentialsOptions.js +4 -0
- package/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -0
- package/driver/spanner/SpannerConnectionOptions.d.ts +120 -0
- package/driver/spanner/SpannerConnectionOptions.js +4 -0
- package/driver/spanner/SpannerConnectionOptions.js.map +1 -0
- package/driver/spanner/SpannerDriver.d.ts +241 -0
- package/driver/spanner/SpannerDriver.js +608 -0
- package/driver/spanner/SpannerDriver.js.map +1 -0
- package/driver/spanner/SpannerQueryRunner.d.ts +350 -0
- package/driver/spanner/SpannerQueryRunner.js +1449 -0
- package/driver/spanner/SpannerQueryRunner.js.map +1 -0
- package/driver/sqlite-abstract/AbstractSqliteDriver.js +65 -16
- package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +218 -32
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/driver/sqlserver/SqlServerDriver.d.ts +3 -1
- package/driver/sqlserver/SqlServerDriver.js +99 -26
- package/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/driver/sqlserver/SqlServerQueryRunner.d.ts +3 -3
- package/driver/sqlserver/SqlServerQueryRunner.js +251 -37
- package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.d.ts +1 -1
- package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
- package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.d.ts +2 -2
- package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
- package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.d.ts +2 -2
- package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
- package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.d.ts +2 -2
- package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -1
- package/driver/types/ColumnTypes.d.ts +1 -1
- package/driver/types/ColumnTypes.js.map +1 -1
- package/driver/types/DatabaseType.d.ts +1 -1
- package/driver/types/DatabaseType.js.map +1 -1
- package/entity-manager/EntityManager.js +1 -1
- package/entity-manager/EntityManager.js.map +1 -1
- package/entity-schema/EntitySchemaColumnOptions.d.ts +6 -2
- package/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
- package/entity-schema/EntitySchemaIndexOptions.d.ts +8 -0
- package/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
- package/entity-schema/EntitySchemaTransformer.js +3 -0
- package/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/find-options/FindOneOptions.d.ts +1 -1
- package/find-options/FindOneOptions.js.map +1 -1
- package/find-options/FindOptionsUtils.d.ts +2 -1
- package/find-options/FindOptionsUtils.js +2 -1
- package/find-options/FindOptionsUtils.js.map +1 -1
- package/logger/AdvancedConsoleLogger.d.ts +1 -1
- package/logger/AdvancedConsoleLogger.js +1 -1
- package/logger/AdvancedConsoleLogger.js.map +1 -1
- package/metadata/ColumnMetadata.d.ts +10 -2
- package/metadata/ColumnMetadata.js +8 -0
- package/metadata/ColumnMetadata.js.map +1 -1
- package/metadata/EntityMetadata.js +1 -1
- package/metadata/EntityMetadata.js.map +1 -1
- package/metadata/ForeignKeyMetadata.d.ts +7 -0
- package/metadata/ForeignKeyMetadata.js +4 -1
- package/metadata/ForeignKeyMetadata.js.map +1 -1
- package/metadata/IndexMetadata.d.ts +8 -0
- package/metadata/IndexMetadata.js +9 -0
- package/metadata/IndexMetadata.js.map +1 -1
- package/metadata-args/IndexMetadataArgs.d.ts +8 -0
- package/metadata-args/IndexMetadataArgs.js.map +1 -1
- package/metadata-args/JoinColumnMetadataArgs.d.ts +4 -0
- package/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
- package/metadata-builder/EntityMetadataBuilder.js +13 -6
- package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/EntityMetadataValidator.js +17 -0
- package/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/metadata-builder/JunctionEntityMetadataBuilder.js +18 -6
- package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/RelationJoinColumnBuilder.js +2 -0
- package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/migration/MigrationExecutor.js +1 -1
- package/migration/MigrationExecutor.js.map +1 -1
- package/package.json +1 -1
- package/persistence/SubjectDatabaseEntityLoader.d.ts +1 -1
- package/persistence/SubjectDatabaseEntityLoader.js +1 -1
- package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/persistence/SubjectExecutor.js +1 -1
- package/persistence/SubjectExecutor.js.map +1 -1
- package/persistence/subject-builder/CascadesSubjectBuilder.d.ts +1 -1
- package/persistence/subject-builder/CascadesSubjectBuilder.js +1 -1
- package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
- package/persistence/subject-builder/ManyToManySubjectBuilder.js +1 -1
- package/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
- package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +1 -1
- package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
- package/platform/PlatformTools.js +5 -0
- package/platform/PlatformTools.js.map +1 -1
- package/query-builder/InsertQueryBuilder.js +15 -3
- package/query-builder/InsertQueryBuilder.js.map +1 -1
- package/query-builder/QueryBuilder.d.ts +1 -1
- package/query-builder/QueryBuilder.js +15 -15
- package/query-builder/QueryBuilder.js.map +1 -1
- package/query-builder/QueryExpressionMap.d.ts +2 -2
- package/query-builder/QueryExpressionMap.js +1 -1
- package/query-builder/QueryExpressionMap.js.map +1 -1
- package/query-builder/ReturningResultsEntityUpdator.js +2 -2
- package/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
- package/query-builder/SelectQueryBuilder.d.ts +1 -1
- package/query-builder/SelectQueryBuilder.js +25 -4
- package/query-builder/SelectQueryBuilder.js.map +1 -1
- package/query-builder/UpdateQueryBuilder.js +18 -7
- package/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/query-runner/BaseQueryRunner.d.ts +10 -0
- package/query-runner/BaseQueryRunner.js +25 -1
- package/query-runner/BaseQueryRunner.js.map +1 -1
- package/query-runner/QueryRunner.d.ts +2 -2
- package/query-runner/QueryRunner.js.map +1 -1
- package/schema-builder/RdbmsSchemaBuilder.d.ts +6 -2
- package/schema-builder/RdbmsSchemaBuilder.js +26 -6
- package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/schema-builder/options/TableColumnOptions.d.ts +10 -2
- package/schema-builder/options/TableColumnOptions.js.map +1 -1
- package/schema-builder/options/TableForeignKeyOptions.d.ts +1 -1
- package/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
- package/schema-builder/options/TableIndexOptions.d.ts +8 -0
- package/schema-builder/options/TableIndexOptions.js.map +1 -1
- package/schema-builder/table/TableColumn.d.ts +6 -2
- package/schema-builder/table/TableColumn.js +2 -0
- package/schema-builder/table/TableColumn.js.map +1 -1
- package/schema-builder/table/TableIndex.d.ts +8 -0
- package/schema-builder/table/TableIndex.js +3 -0
- package/schema-builder/table/TableIndex.js.map +1 -1
- package/schema-builder/util/TableUtils.js +1 -0
- package/schema-builder/util/TableUtils.js.map +1 -1
- package/util/OrmUtils.d.ts +1 -1
- package/util/OrmUtils.js +4 -4
- package/util/OrmUtils.js.map +1 -1
- package/util/escapeRegExp.d.ts +1 -0
- package/util/escapeRegExp.js +10 -0
- package/util/escapeRegExp.js.map +1 -0
|
@@ -315,6 +315,26 @@ export class MysqlQueryRunner extends BaseQueryRunner {
|
|
|
315
315
|
// createTable does not need separate method to create foreign keys, because it create fk's in the same query with table creation.
|
|
316
316
|
if (createForeignKeys)
|
|
317
317
|
table.foreignKeys.forEach((foreignKey) => downQueries.push(this.dropForeignKeySql(table, foreignKey)));
|
|
318
|
+
// if table has column with generated type, we must add the expression to the metadata table
|
|
319
|
+
const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
|
|
320
|
+
for (const column of generatedColumns) {
|
|
321
|
+
const currentDatabase = await this.getCurrentDatabase();
|
|
322
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
323
|
+
schema: currentDatabase,
|
|
324
|
+
table: table.name,
|
|
325
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
326
|
+
name: column.name,
|
|
327
|
+
value: column.asExpression,
|
|
328
|
+
});
|
|
329
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
330
|
+
schema: currentDatabase,
|
|
331
|
+
table: table.name,
|
|
332
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
333
|
+
name: column.name,
|
|
334
|
+
});
|
|
335
|
+
upQueries.push(insertQuery);
|
|
336
|
+
downQueries.push(deleteQuery);
|
|
337
|
+
}
|
|
318
338
|
return this.executeQueries(upQueries, downQueries);
|
|
319
339
|
}
|
|
320
340
|
/**
|
|
@@ -339,6 +359,26 @@ export class MysqlQueryRunner extends BaseQueryRunner {
|
|
|
339
359
|
table.indices.forEach((index) => upQueries.push(this.dropIndexSql(table, index)));
|
|
340
360
|
upQueries.push(this.dropTableSql(table));
|
|
341
361
|
downQueries.push(this.createTableSql(table, createForeignKeys));
|
|
362
|
+
// if table had columns with generated type, we must remove the expression from the metadata table
|
|
363
|
+
const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
|
|
364
|
+
for (const column of generatedColumns) {
|
|
365
|
+
const currentDatabase = await this.getCurrentDatabase();
|
|
366
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
367
|
+
schema: currentDatabase,
|
|
368
|
+
table: table.name,
|
|
369
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
370
|
+
name: column.name,
|
|
371
|
+
});
|
|
372
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
373
|
+
schema: currentDatabase,
|
|
374
|
+
table: table.name,
|
|
375
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
376
|
+
name: column.name,
|
|
377
|
+
value: column.asExpression,
|
|
378
|
+
});
|
|
379
|
+
upQueries.push(deleteQuery);
|
|
380
|
+
downQueries.push(insertQuery);
|
|
381
|
+
}
|
|
342
382
|
await this.executeQueries(upQueries, downQueries);
|
|
343
383
|
}
|
|
344
384
|
/**
|
|
@@ -384,6 +424,10 @@ export class MysqlQueryRunner extends BaseQueryRunner {
|
|
|
384
424
|
downQueries.push(new Query(`RENAME TABLE ${this.escapePath(newTable)} TO ${this.escapePath(oldTable)}`));
|
|
385
425
|
// rename index constraints
|
|
386
426
|
newTable.indices.forEach((index) => {
|
|
427
|
+
const oldIndexName = this.connection.namingStrategy.indexName(oldTable, index.columnNames);
|
|
428
|
+
// Skip renaming if Index has user defined constraint name
|
|
429
|
+
if (index.name !== oldIndexName)
|
|
430
|
+
return;
|
|
387
431
|
// build new constraint name
|
|
388
432
|
const columnNames = index.columnNames
|
|
389
433
|
.map((column) => `\`${column}\``)
|
|
@@ -407,6 +451,10 @@ export class MysqlQueryRunner extends BaseQueryRunner {
|
|
|
407
451
|
});
|
|
408
452
|
// rename foreign key constraint
|
|
409
453
|
newTable.foreignKeys.forEach((foreignKey) => {
|
|
454
|
+
const oldForeignKeyName = this.connection.namingStrategy.foreignKeyName(oldTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
455
|
+
// Skip renaming if foreign key has user defined constraint name
|
|
456
|
+
if (foreignKey.name !== oldForeignKeyName)
|
|
457
|
+
return;
|
|
410
458
|
// build new constraint name
|
|
411
459
|
const columnNames = foreignKey.columnNames
|
|
412
460
|
.map((column) => `\`${column}\``)
|
|
@@ -484,6 +532,24 @@ export class MysqlQueryRunner extends BaseQueryRunner {
|
|
|
484
532
|
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} CHANGE \`${column.name}\` ${this.buildCreateColumnSql(nonGeneratedColumn, true)}`));
|
|
485
533
|
}
|
|
486
534
|
}
|
|
535
|
+
if (column.generatedType && column.asExpression) {
|
|
536
|
+
const currentDatabase = await this.getCurrentDatabase();
|
|
537
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
538
|
+
schema: currentDatabase,
|
|
539
|
+
table: table.name,
|
|
540
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
541
|
+
name: column.name,
|
|
542
|
+
value: column.asExpression,
|
|
543
|
+
});
|
|
544
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
545
|
+
schema: currentDatabase,
|
|
546
|
+
table: table.name,
|
|
547
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
548
|
+
name: column.name,
|
|
549
|
+
});
|
|
550
|
+
upQueries.push(insertQuery);
|
|
551
|
+
downQueries.push(deleteQuery);
|
|
552
|
+
}
|
|
487
553
|
// create column index
|
|
488
554
|
const columnIndex = clonedTable.indices.find((index) => index.columnNames.length === 1 &&
|
|
489
555
|
index.columnNames[0] === column.name);
|
|
@@ -560,7 +626,12 @@ export class MysqlQueryRunner extends BaseQueryRunner {
|
|
|
560
626
|
newColumn.generationStrategy !== "uuid") ||
|
|
561
627
|
oldColumn.type !== newColumn.type ||
|
|
562
628
|
oldColumn.length !== newColumn.length ||
|
|
563
|
-
oldColumn.generatedType
|
|
629
|
+
(oldColumn.generatedType &&
|
|
630
|
+
newColumn.generatedType &&
|
|
631
|
+
oldColumn.generatedType !== newColumn.generatedType) ||
|
|
632
|
+
(!oldColumn.generatedType &&
|
|
633
|
+
newColumn.generatedType === "VIRTUAL") ||
|
|
634
|
+
(oldColumn.generatedType === "VIRTUAL" && !newColumn.generatedType)) {
|
|
564
635
|
await this.dropColumn(table, oldColumn);
|
|
565
636
|
await this.addColumn(table, newColumn);
|
|
566
637
|
// update cloned table
|
|
@@ -573,6 +644,10 @@ export class MysqlQueryRunner extends BaseQueryRunner {
|
|
|
573
644
|
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} CHANGE \`${newColumn.name}\` \`${oldColumn.name}\` ${this.buildCreateColumnSql(oldColumn, true, true)}`));
|
|
574
645
|
// rename index constraints
|
|
575
646
|
clonedTable.findColumnIndices(oldColumn).forEach((index) => {
|
|
647
|
+
const oldUniqueName = this.connection.namingStrategy.indexName(clonedTable, index.columnNames);
|
|
648
|
+
// Skip renaming if Index has user defined constraint name
|
|
649
|
+
if (index.name !== oldUniqueName)
|
|
650
|
+
return;
|
|
576
651
|
// build new constraint name
|
|
577
652
|
index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);
|
|
578
653
|
index.columnNames.push(newColumn.name);
|
|
@@ -600,6 +675,10 @@ export class MysqlQueryRunner extends BaseQueryRunner {
|
|
|
600
675
|
clonedTable
|
|
601
676
|
.findColumnForeignKeys(oldColumn)
|
|
602
677
|
.forEach((foreignKey) => {
|
|
678
|
+
const foreignKeyName = this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
679
|
+
// Skip renaming if foreign key has user defined constraint name
|
|
680
|
+
if (foreignKey.name !== foreignKeyName)
|
|
681
|
+
return;
|
|
603
682
|
// build new constraint name
|
|
604
683
|
foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);
|
|
605
684
|
foreignKey.columnNames.push(newColumn.name);
|
|
@@ -636,6 +715,77 @@ export class MysqlQueryRunner extends BaseQueryRunner {
|
|
|
636
715
|
if (this.isColumnChanged(oldColumn, newColumn, true, true)) {
|
|
637
716
|
upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} CHANGE \`${oldColumn.name}\` ${this.buildCreateColumnSql(newColumn, true)}`));
|
|
638
717
|
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} CHANGE \`${newColumn.name}\` ${this.buildCreateColumnSql(oldColumn, true)}`));
|
|
718
|
+
if (oldColumn.generatedType && !newColumn.generatedType) {
|
|
719
|
+
// if column changed from generated to non-generated, delete record from typeorm metadata
|
|
720
|
+
const currentDatabase = await this.getCurrentDatabase();
|
|
721
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
722
|
+
schema: currentDatabase,
|
|
723
|
+
table: table.name,
|
|
724
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
725
|
+
name: oldColumn.name,
|
|
726
|
+
});
|
|
727
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
728
|
+
schema: currentDatabase,
|
|
729
|
+
table: table.name,
|
|
730
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
731
|
+
name: oldColumn.name,
|
|
732
|
+
value: oldColumn.asExpression,
|
|
733
|
+
});
|
|
734
|
+
upQueries.push(deleteQuery);
|
|
735
|
+
downQueries.push(insertQuery);
|
|
736
|
+
}
|
|
737
|
+
else if (!oldColumn.generatedType &&
|
|
738
|
+
newColumn.generatedType) {
|
|
739
|
+
// if column changed from non-generated to generated, insert record into typeorm metadata
|
|
740
|
+
const currentDatabase = await this.getCurrentDatabase();
|
|
741
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
742
|
+
schema: currentDatabase,
|
|
743
|
+
table: table.name,
|
|
744
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
745
|
+
name: newColumn.name,
|
|
746
|
+
value: newColumn.asExpression,
|
|
747
|
+
});
|
|
748
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
749
|
+
schema: currentDatabase,
|
|
750
|
+
table: table.name,
|
|
751
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
752
|
+
name: newColumn.name,
|
|
753
|
+
});
|
|
754
|
+
upQueries.push(insertQuery);
|
|
755
|
+
downQueries.push(deleteQuery);
|
|
756
|
+
}
|
|
757
|
+
else if (oldColumn.asExpression !== newColumn.asExpression) {
|
|
758
|
+
// if only expression changed, just update it in typeorm_metadata table
|
|
759
|
+
const currentDatabase = await this.getCurrentDatabase();
|
|
760
|
+
const updateQuery = this.connection
|
|
761
|
+
.createQueryBuilder()
|
|
762
|
+
.update(this.getTypeormMetadataTableName())
|
|
763
|
+
.set({ value: newColumn.asExpression })
|
|
764
|
+
.where("`type` = :type", {
|
|
765
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
766
|
+
})
|
|
767
|
+
.andWhere("`name` = :name", { name: oldColumn.name })
|
|
768
|
+
.andWhere("`schema` = :schema", {
|
|
769
|
+
schema: currentDatabase,
|
|
770
|
+
})
|
|
771
|
+
.andWhere("`table` = :table", { table: table.name })
|
|
772
|
+
.getQueryAndParameters();
|
|
773
|
+
const revertUpdateQuery = this.connection
|
|
774
|
+
.createQueryBuilder()
|
|
775
|
+
.update(this.getTypeormMetadataTableName())
|
|
776
|
+
.set({ value: oldColumn.asExpression })
|
|
777
|
+
.where("`type` = :type", {
|
|
778
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
779
|
+
})
|
|
780
|
+
.andWhere("`name` = :name", { name: newColumn.name })
|
|
781
|
+
.andWhere("`schema` = :schema", {
|
|
782
|
+
schema: currentDatabase,
|
|
783
|
+
})
|
|
784
|
+
.andWhere("`table` = :table", { table: table.name })
|
|
785
|
+
.getQueryAndParameters();
|
|
786
|
+
upQueries.push(new Query(updateQuery[0], updateQuery[1]));
|
|
787
|
+
downQueries.push(new Query(revertUpdateQuery[0], revertUpdateQuery[1]));
|
|
788
|
+
}
|
|
639
789
|
}
|
|
640
790
|
if (newColumn.isPrimary !== oldColumn.isPrimary) {
|
|
641
791
|
// if table have generated column, we must drop AUTO_INCREMENT before changing primary constraints.
|
|
@@ -814,6 +964,24 @@ export class MysqlQueryRunner extends BaseQueryRunner {
|
|
|
814
964
|
}
|
|
815
965
|
upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP COLUMN \`${column.name}\``));
|
|
816
966
|
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD ${this.buildCreateColumnSql(column, true)}`));
|
|
967
|
+
if (column.generatedType && column.asExpression) {
|
|
968
|
+
const currentDatabase = await this.getCurrentDatabase();
|
|
969
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
970
|
+
schema: currentDatabase,
|
|
971
|
+
table: table.name,
|
|
972
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
973
|
+
name: column.name,
|
|
974
|
+
});
|
|
975
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
976
|
+
schema: currentDatabase,
|
|
977
|
+
table: table.name,
|
|
978
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
979
|
+
name: column.name,
|
|
980
|
+
value: column.asExpression,
|
|
981
|
+
});
|
|
982
|
+
upQueries.push(deleteQuery);
|
|
983
|
+
downQueries.push(insertQuery);
|
|
984
|
+
}
|
|
817
985
|
await this.executeQueries(upQueries, downQueries);
|
|
818
986
|
clonedTable.removeColumn(column);
|
|
819
987
|
this.replaceCachedTable(table, clonedTable);
|
|
@@ -1349,11 +1517,12 @@ export class MysqlQueryRunner extends BaseQueryRunner {
|
|
|
1349
1517
|
table.database = dbTable["TABLE_SCHEMA"];
|
|
1350
1518
|
table.name = this.driver.buildTableName(dbTable["TABLE_NAME"], undefined, db);
|
|
1351
1519
|
// create columns from the loaded columns
|
|
1352
|
-
table.columns = dbColumns
|
|
1353
|
-
.filter((dbColumn) => dbColumn["TABLE_NAME"] ===
|
|
1520
|
+
table.columns = await Promise.all(dbColumns
|
|
1521
|
+
.filter((dbColumn) => dbColumn["TABLE_NAME"] ===
|
|
1522
|
+
dbTable["TABLE_NAME"] &&
|
|
1354
1523
|
dbColumn["TABLE_SCHEMA"] ===
|
|
1355
1524
|
dbTable["TABLE_SCHEMA"])
|
|
1356
|
-
.map((dbColumn) => {
|
|
1525
|
+
.map(async (dbColumn) => {
|
|
1357
1526
|
const columnUniqueIndices = dbIndices.filter((dbIndex) => {
|
|
1358
1527
|
return (dbIndex["TABLE_NAME"] ===
|
|
1359
1528
|
dbTable["TABLE_NAME"] &&
|
|
@@ -1361,7 +1530,8 @@ export class MysqlQueryRunner extends BaseQueryRunner {
|
|
|
1361
1530
|
dbTable["TABLE_SCHEMA"] &&
|
|
1362
1531
|
dbIndex["COLUMN_NAME"] ===
|
|
1363
1532
|
dbColumn["COLUMN_NAME"] &&
|
|
1364
|
-
parseInt(dbIndex["NON_UNIQUE"], 10) ===
|
|
1533
|
+
parseInt(dbIndex["NON_UNIQUE"], 10) ===
|
|
1534
|
+
0);
|
|
1365
1535
|
});
|
|
1366
1536
|
const tableMetadata = this.connection.entityMetadatas.find((metadata) => this.getTablePath(table) ===
|
|
1367
1537
|
this.getTablePath(metadata));
|
|
@@ -1382,9 +1552,11 @@ export class MysqlQueryRunner extends BaseQueryRunner {
|
|
|
1382
1552
|
});
|
|
1383
1553
|
const tableColumn = new TableColumn();
|
|
1384
1554
|
tableColumn.name = dbColumn["COLUMN_NAME"];
|
|
1385
|
-
tableColumn.type =
|
|
1555
|
+
tableColumn.type =
|
|
1556
|
+
dbColumn["DATA_TYPE"].toLowerCase();
|
|
1386
1557
|
tableColumn.zerofill =
|
|
1387
|
-
dbColumn["COLUMN_TYPE"].indexOf("zerofill") !==
|
|
1558
|
+
dbColumn["COLUMN_TYPE"].indexOf("zerofill") !==
|
|
1559
|
+
-1;
|
|
1388
1560
|
tableColumn.unsigned = tableColumn.zerofill
|
|
1389
1561
|
? true
|
|
1390
1562
|
: dbColumn["COLUMN_TYPE"].indexOf("unsigned") !== -1;
|
|
@@ -1398,7 +1570,8 @@ export class MysqlQueryRunner extends BaseQueryRunner {
|
|
|
1398
1570
|
}
|
|
1399
1571
|
if (dbColumn["COLUMN_DEFAULT"] === null ||
|
|
1400
1572
|
dbColumn["COLUMN_DEFAULT"] === undefined ||
|
|
1401
|
-
(isMariaDb &&
|
|
1573
|
+
(isMariaDb &&
|
|
1574
|
+
dbColumn["COLUMN_DEFAULT"] === "NULL")) {
|
|
1402
1575
|
tableColumn.default = undefined;
|
|
1403
1576
|
}
|
|
1404
1577
|
else if (/^CURRENT_TIMESTAMP(\([0-9]*\))?$/i.test(dbColumn["COLUMN_DEFAULT"])) {
|
|
@@ -1420,23 +1593,41 @@ export class MysqlQueryRunner extends BaseQueryRunner {
|
|
|
1420
1593
|
// New versions of MariaDB return expressions in lowercase. We need to set it in
|
|
1421
1594
|
// uppercase so the comparison in MysqlDriver#compareExtraValues does not fail.
|
|
1422
1595
|
tableColumn.onUpdate = dbColumn["EXTRA"]
|
|
1423
|
-
.substring(dbColumn["EXTRA"].indexOf("on update") +
|
|
1596
|
+
.substring(dbColumn["EXTRA"].indexOf("on update") +
|
|
1597
|
+
10)
|
|
1424
1598
|
.toUpperCase();
|
|
1425
1599
|
}
|
|
1426
1600
|
if (dbColumn["GENERATION_EXPRESSION"]) {
|
|
1427
|
-
tableColumn.asExpression =
|
|
1428
|
-
dbColumn["GENERATION_EXPRESSION"];
|
|
1429
1601
|
tableColumn.generatedType =
|
|
1430
1602
|
dbColumn["EXTRA"].indexOf("VIRTUAL") !== -1
|
|
1431
1603
|
? "VIRTUAL"
|
|
1432
1604
|
: "STORED";
|
|
1605
|
+
// We cannot relay on information_schema.columns.generation_expression, because it is formatted different.
|
|
1606
|
+
const asExpressionQuery = await this.selectTypeormMetadataSql({
|
|
1607
|
+
schema: dbTable["TABLE_SCHEMA"],
|
|
1608
|
+
table: dbTable["TABLE_NAME"],
|
|
1609
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
1610
|
+
name: tableColumn.name,
|
|
1611
|
+
});
|
|
1612
|
+
const results = await this.query(asExpressionQuery.query, asExpressionQuery.parameters);
|
|
1613
|
+
if (results[0] && results[0].value) {
|
|
1614
|
+
tableColumn.asExpression = results[0].value;
|
|
1615
|
+
}
|
|
1616
|
+
else {
|
|
1617
|
+
tableColumn.asExpression = "";
|
|
1618
|
+
}
|
|
1433
1619
|
}
|
|
1434
1620
|
tableColumn.isUnique =
|
|
1435
1621
|
columnUniqueIndices.length > 0 &&
|
|
1436
1622
|
!hasIgnoredIndex &&
|
|
1437
1623
|
!isConstraintComposite;
|
|
1438
|
-
tableColumn.
|
|
1439
|
-
|
|
1624
|
+
if (isMariaDb && tableColumn.generatedType) {
|
|
1625
|
+
// do nothing - MariaDB does not support NULL/NOT NULL expressions for generated columns
|
|
1626
|
+
}
|
|
1627
|
+
else {
|
|
1628
|
+
tableColumn.isNullable =
|
|
1629
|
+
dbColumn["IS_NULLABLE"] === "YES";
|
|
1630
|
+
}
|
|
1440
1631
|
tableColumn.isPrimary = dbPrimaryKeys.some((dbPrimaryKey) => {
|
|
1441
1632
|
return (dbPrimaryKey["TABLE_NAME"] ===
|
|
1442
1633
|
dbColumn["TABLE_NAME"] &&
|
|
@@ -1446,11 +1637,13 @@ export class MysqlQueryRunner extends BaseQueryRunner {
|
|
|
1446
1637
|
dbColumn["COLUMN_NAME"]);
|
|
1447
1638
|
});
|
|
1448
1639
|
tableColumn.isGenerated =
|
|
1449
|
-
dbColumn["EXTRA"].indexOf("auto_increment") !==
|
|
1640
|
+
dbColumn["EXTRA"].indexOf("auto_increment") !==
|
|
1641
|
+
-1;
|
|
1450
1642
|
if (tableColumn.isGenerated)
|
|
1451
1643
|
tableColumn.generationStrategy = "increment";
|
|
1452
1644
|
tableColumn.comment =
|
|
1453
|
-
typeof dbColumn["COLUMN_COMMENT"] ===
|
|
1645
|
+
typeof dbColumn["COLUMN_COMMENT"] ===
|
|
1646
|
+
"string" &&
|
|
1454
1647
|
dbColumn["COLUMN_COMMENT"].length === 0
|
|
1455
1648
|
? undefined
|
|
1456
1649
|
: dbColumn["COLUMN_COMMENT"];
|
|
@@ -1462,16 +1655,18 @@ export class MysqlQueryRunner extends BaseQueryRunner {
|
|
|
1462
1655
|
: dbColumn["CHARACTER_SET_NAME"];
|
|
1463
1656
|
if (dbColumn["COLLATION_NAME"])
|
|
1464
1657
|
tableColumn.collation =
|
|
1465
|
-
dbColumn["COLLATION_NAME"] ===
|
|
1658
|
+
dbColumn["COLLATION_NAME"] ===
|
|
1659
|
+
defaultCollation
|
|
1466
1660
|
? undefined
|
|
1467
1661
|
: dbColumn["COLLATION_NAME"];
|
|
1468
1662
|
// check only columns that have length property
|
|
1469
1663
|
if (this.driver.withLengthColumnTypes.indexOf(tableColumn.type) !== -1 &&
|
|
1470
1664
|
dbColumn["CHARACTER_MAXIMUM_LENGTH"]) {
|
|
1471
1665
|
const length = dbColumn["CHARACTER_MAXIMUM_LENGTH"].toString();
|
|
1472
|
-
tableColumn.length =
|
|
1473
|
-
|
|
1474
|
-
|
|
1666
|
+
tableColumn.length =
|
|
1667
|
+
!this.isDefaultColumnLength(table, tableColumn, length)
|
|
1668
|
+
? length
|
|
1669
|
+
: "";
|
|
1475
1670
|
}
|
|
1476
1671
|
if (tableColumn.type === "decimal" ||
|
|
1477
1672
|
tableColumn.type === "double" ||
|
|
@@ -1504,7 +1699,7 @@ export class MysqlQueryRunner extends BaseQueryRunner {
|
|
|
1504
1699
|
tableColumn.precision = parseInt(dbColumn["DATETIME_PRECISION"]);
|
|
1505
1700
|
}
|
|
1506
1701
|
return tableColumn;
|
|
1507
|
-
});
|
|
1702
|
+
}));
|
|
1508
1703
|
// find foreign key constraints of table, group them by constraint name and build TableForeignKey.
|
|
1509
1704
|
const tableForeignKeyConstraints = OrmUtils.uniq(dbForeignKeys.filter((dbForeignKey) => {
|
|
1510
1705
|
return (dbForeignKey["TABLE_NAME"] ===
|
|
@@ -1801,6 +1996,10 @@ export class MysqlQueryRunner extends BaseQueryRunner {
|
|
|
1801
1996
|
else {
|
|
1802
1997
|
c = `\`${column.name}\` ${this.connection.driver.createFullType(column)}`;
|
|
1803
1998
|
}
|
|
1999
|
+
if (column.charset)
|
|
2000
|
+
c += ` CHARACTER SET "${column.charset}"`;
|
|
2001
|
+
if (column.collation)
|
|
2002
|
+
c += ` COLLATE "${column.collation}"`;
|
|
1804
2003
|
if (column.asExpression)
|
|
1805
2004
|
c += ` AS (${column.asExpression}) ${column.generatedType ? column.generatedType : "VIRTUAL"}`;
|
|
1806
2005
|
// if you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to that column.
|
|
@@ -1814,10 +2013,6 @@ export class MysqlQueryRunner extends BaseQueryRunner {
|
|
|
1814
2013
|
c += ` (${column.enum
|
|
1815
2014
|
.map((value) => "'" + value.replace(/'/g, "''") + "'")
|
|
1816
2015
|
.join(", ")})`;
|
|
1817
|
-
if (column.charset)
|
|
1818
|
-
c += ` CHARACTER SET "${column.charset}"`;
|
|
1819
|
-
if (column.collation)
|
|
1820
|
-
c += ` COLLATE "${column.collation}"`;
|
|
1821
2016
|
const isMariaDb = this.driver.options.type === "mariadb";
|
|
1822
2017
|
if (isMariaDb &&
|
|
1823
2018
|
column.asExpression &&
|