Skip to content

Commit 80039f5

Browse files
Merge pull request #336 from diffix/cristian/misc
Fix type casting of generalized `integer` columns.
2 parents 31fa3a4 + fe46b4b commit 80039f5

File tree

3 files changed

+8
-9
lines changed

3 files changed

+8
-9
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
- Fixed supression summary info when running in "count entities" mode.
99
- Fixed a crash happening when encountering invalid values in a `boolean` column.
1010
- Upgraded to using .NET 6.0 for the anonymizer service.
11+
- Fixed type casting of generalized `integer` columns, which prevented expression normalization.
1112

1213
### Version 1.0.1
1314

src/shared/anonymizer.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,12 @@ class DiffixAnonymizer implements Anonymizer {
5252
});
5353
}
5454

55-
private makeBinSQL = (columnName: string, { binSize }: NumericGeneralization) => {
56-
return `floor_by(cast(${columnName} AS real), ${binSize})`;
55+
private makeBinSQL = (columnName: string, columnType: string, { binSize }: NumericGeneralization) => {
56+
return `floor_by(cast(${columnName} AS ${columnType}), ${binSize}) AS ${columnName}`;
5757
};
5858

5959
private makeSubstringSQL = (columnName: string, { substringStart, substringLength }: StringGeneralization) => {
60-
return `substring(${columnName}, ${substringStart}, ${substringLength})`;
60+
return `substring(${columnName}, ${substringStart}, ${substringLength}) AS ${columnName}`;
6161
};
6262

6363
private mapBucketToSQL = (column: BucketColumn) => {
@@ -66,16 +66,14 @@ class DiffixAnonymizer implements Anonymizer {
6666
switch (column.type) {
6767
case 'integer':
6868
return column.generalization
69-
? this.makeBinSQL(columnName, column.generalization) + ` AS ${columnName}`
69+
? this.makeBinSQL(columnName, 'integer', column.generalization)
7070
: `cast(${columnName} AS integer) AS ${columnName}`;
7171
case 'real':
7272
return column.generalization
73-
? this.makeBinSQL(columnName, column.generalization) + ` AS ${columnName}`
73+
? this.makeBinSQL(columnName, 'real', column.generalization)
7474
: `cast(${columnName} AS real) AS ${columnName}`;
7575
case 'text':
76-
return column.generalization
77-
? this.makeSubstringSQL(columnName, column.generalization) + ` AS ${columnName}`
78-
: columnName;
76+
return column.generalization ? this.makeSubstringSQL(columnName, column.generalization) : columnName;
7977
case 'boolean':
8078
return `cast(${columnName} AS boolean) AS ${columnName}`;
8179
}

0 commit comments

Comments
 (0)