Skip to content

Commit 2fd0a8a

Browse files
authored
fix: HANA - SSL options, column delta detection mechanism (#5938)
1 parent 4ef0bce commit 2fd0a8a

File tree

3 files changed

+12
-12
lines changed

3 files changed

+12
-12
lines changed

src/driver/sap/SapConnectionCredentialsOptions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export interface SapConnectionCredentialsOptions {
3636
/**
3737
* Validate database certificate
3838
*/
39-
readonly validateCertificate?: boolean;
39+
readonly sslValidateCertificate?: boolean;
4040

4141
/**
4242
* Key for encrypted connection

src/driver/sap/SapDriver.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ export class SapDriver implements Driver {
220220

221221
if (this.options.database) dbParams.databaseName = this.options.database;
222222
if (this.options.encrypt) dbParams.encrypt = this.options.encrypt;
223-
if (this.options.validateCertificate) dbParams.validateCertificate = this.options.validateCertificate;
223+
if (this.options.sslValidateCertificate) dbParams.validateCertificate = this.options.sslValidateCertificate;
224224
if (this.options.key) dbParams.key = this.options.key;
225225
if (this.options.cert) dbParams.cert = this.options.cert;
226226
if (this.options.ca) dbParams.ca = this.options.ca;
@@ -573,33 +573,33 @@ export class SapDriver implements Driver {
573573

574574
// console.log("table:", columnMetadata.entityMetadata.tableName);
575575
// console.log("name:", tableColumn.name, columnMetadata.databaseName);
576-
// console.log("type:", tableColumn.type, this.normalizeType(columnMetadata));
577-
// console.log("length:", tableColumn.length, columnMetadata.length);
576+
// console.log("type:", tableColumn.type, _this.normalizeType(columnMetadata));
577+
// console.log("length:", tableColumn.length, _this.getColumnLength(columnMetadata));
578578
// console.log("width:", tableColumn.width, columnMetadata.width);
579579
// console.log("precision:", tableColumn.precision, columnMetadata.precision);
580580
// console.log("scale:", tableColumn.scale, columnMetadata.scale);
581581
// console.log("default:", tableColumn.default, columnMetadata.default);
582582
// console.log("isPrimary:", tableColumn.isPrimary, columnMetadata.isPrimary);
583583
// console.log("isNullable:", tableColumn.isNullable, columnMetadata.isNullable);
584-
// console.log("isUnique:", tableColumn.isUnique, this.normalizeIsUnique(columnMetadata));
584+
// console.log("isUnique:", tableColumn.isUnique, _this.normalizeIsUnique(columnMetadata));
585585
// console.log("isGenerated:", tableColumn.isGenerated, columnMetadata.isGenerated);
586586
// console.log((columnMetadata.generationStrategy !== "uuid" && tableColumn.isGenerated !== columnMetadata.isGenerated));
587587
// console.log("==========================================");
588588

589589
const normalizeDefault = this.normalizeDefault(columnMetadata);
590590
const hanaNullComapatibleDefault = normalizeDefault == null ? undefined : normalizeDefault;
591591

592-
return tableColumn.name !== columnMetadata.databaseName
592+
return tableColumn.name !== columnMetadata.databaseName
593593
|| tableColumn.type !== this.normalizeType(columnMetadata)
594-
|| tableColumn.length !== columnMetadata.length
594+
|| columnMetadata.length && tableColumn.length !== this.getColumnLength(columnMetadata)
595595
|| tableColumn.precision !== columnMetadata.precision
596596
|| tableColumn.scale !== columnMetadata.scale
597597
// || tableColumn.comment !== columnMetadata.comment || // todo
598598
|| (!tableColumn.isGenerated && (hanaNullComapatibleDefault !== tableColumn.default)) // we included check for generated here, because generated columns already can have default values
599599
|| tableColumn.isPrimary !== columnMetadata.isPrimary
600600
|| tableColumn.isNullable !== columnMetadata.isNullable
601601
|| tableColumn.isUnique !== this.normalizeIsUnique(columnMetadata)
602-
|| tableColumn.isGenerated !== columnMetadata.isGenerated;
602+
|| (columnMetadata.generationStrategy !== "uuid" && tableColumn.isGenerated !== columnMetadata.isGenerated);
603603
});
604604
}
605605

src/driver/sap/SapQueryRunner.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1447,7 +1447,7 @@ export class SapQueryRunner extends BaseQueryRunner implements QueryRunner {
14471447
return `("SCHEMA_NAME" = '${schema}' AND "TABLE_NAME" = '${name}')`;
14481448
}).join(" OR ");
14491449
const tablesSql = `SELECT * FROM "SYS"."TABLES" WHERE ` + tablesCondition;
1450-
const columnsSql = `SELECT * FROM "SYS"."TABLE_COLUMNS" WHERE ` + tablesCondition;
1450+
const columnsSql = `SELECT * FROM "SYS"."TABLE_COLUMNS" WHERE ` + tablesCondition + ` ORDER BY "POSITION"`;
14511451

14521452
const constraintsCondition = tableNames.map(tableName => {
14531453
let [schema, name] = tableName.split(".");
@@ -1458,7 +1458,7 @@ export class SapQueryRunner extends BaseQueryRunner implements QueryRunner {
14581458
return `("SCHEMA_NAME" = '${schema}' AND "TABLE_NAME" = '${name}')`;
14591459
}).join(" OR ");
14601460

1461-
const constraintsSql = `SELECT * FROM "SYS"."CONSTRAINTS" WHERE (${constraintsCondition})`;
1461+
const constraintsSql = `SELECT * FROM "SYS"."CONSTRAINTS" WHERE (${constraintsCondition}) ORDER BY "POSITION"`;
14621462

14631463
const indicesCondition = tableNames.map(tableName => {
14641464
let [schema, name] = tableName.split(".");
@@ -1471,7 +1471,7 @@ export class SapQueryRunner extends BaseQueryRunner implements QueryRunner {
14711471
// excluding primary key and autogenerated fulltext indices
14721472
const indicesSql = `SELECT "I"."INDEX_TYPE", "I"."SCHEMA_NAME", "I"."TABLE_NAME", "I"."INDEX_NAME", "IC"."COLUMN_NAME", "I"."CONSTRAINT" ` +
14731473
`FROM "SYS"."INDEXES" "I" INNER JOIN "SYS"."INDEX_COLUMNS" "IC" ON "IC"."INDEX_OID" = "I"."INDEX_OID" ` +
1474-
`WHERE (${indicesCondition}) AND ("I"."CONSTRAINT" IS NULL OR "I"."CONSTRAINT" != 'PRIMARY KEY') AND "I"."INDEX_NAME" NOT LIKE '%_SYS_FULLTEXT_%'`;
1474+
`WHERE (${indicesCondition}) AND ("I"."CONSTRAINT" IS NULL OR "I"."CONSTRAINT" != 'PRIMARY KEY') AND "I"."INDEX_NAME" NOT LIKE '%_SYS_FULLTEXT_%' ORDER BY "IC"."POSITION"`;
14751475

14761476
const foreignKeysCondition = tableNames.map(tableName => {
14771477
let [schema, name] = tableName.split(".");
@@ -1481,7 +1481,7 @@ export class SapQueryRunner extends BaseQueryRunner implements QueryRunner {
14811481
}
14821482
return `("SCHEMA_NAME" = '${schema}' AND "TABLE_NAME" = '${name}')`;
14831483
}).join(" OR ");
1484-
const foreignKeysSql = `SELECT * FROM "SYS"."REFERENTIAL_CONSTRAINTS" WHERE (${foreignKeysCondition})`;
1484+
const foreignKeysSql = `SELECT * FROM "SYS"."REFERENTIAL_CONSTRAINTS" WHERE (${foreignKeysCondition}) ORDER BY "POSITION"`;
14851485
const [dbTables, dbColumns, dbConstraints, dbIndices, dbForeignKeys]: ObjectLiteral[][] = await Promise.all([
14861486
this.query(tablesSql),
14871487
this.query(columnsSql),

0 commit comments

Comments
 (0)