Skip to content

Commit de4e949

Browse files
committed
fix issue #9. Added new quoted.identifiers parameter
Escape the columns name when quoted-identifiers parameter is set
1 parent c7c64d4 commit de4e949

5 files changed

Lines changed: 31 additions & 6 deletions

File tree

ReplicaDB.iml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@
3939
<orderEntry type="library" name="Maven: com.oracle.ojdbc:xmlparserv2:19.3.0.0" level="project" />
4040
<orderEntry type="library" name="Maven: org.slf4j:slf4j-log4j12:1.7.25" level="project" />
4141
<orderEntry type="library" name="Maven: log4j:log4j:1.2.17" level="project" />
42-
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.10.2" level="project" />
43-
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.10.2" level="project" />
44-
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.10.2" level="project" />
42+
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.11.0" level="project" />
43+
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.11.0" level="project" />
44+
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.11.0" level="project" />
4545
<orderEntry type="library" name="Maven: com.microsoft.sqlserver:mssql-jdbc:7.2.2.jre8" level="project" />
4646
<orderEntry type="library" name="Maven: com.amazonaws:aws-java-sdk-s3:1.11.106" level="project" />
4747
<orderEntry type="library" name="Maven: com.amazonaws:aws-java-sdk-kms:1.11.106" level="project" />

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>org.replicadb</groupId>
88
<artifactId>ReplicaDB</artifactId>
9-
<version>0.8.0</version>
9+
<version>0.8.1</version>
1010

1111
<name>ReplicaDB</name>
1212
<url>https://github.com/osalvador/ReplicaDB</url>

src/main/java/org/replicadb/cli/ToolOptions.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ public class ToolOptions {
4242
private Boolean help = false;
4343
private Boolean version = false;
4444
private Boolean verbose = false;
45+
private Boolean quotedIdentifiers = false;
4546
private String optionsFile;
4647

4748
private String mode = DEFAULT_MODE;
@@ -286,6 +287,13 @@ private void checkOptions(String[] args) throws ParseException, IOException {
286287
Option verboseOpt = new Option("v", "verbose", false, "Print more information while working");
287288
options.addOption(verboseOpt);
288289

290+
options.addOption(
291+
Option.builder()
292+
.longOpt("quoted-identifiers")
293+
.desc("Should all database identifiers be quoted.")
294+
.build()
295+
);
296+
289297

290298
// create the command line parser
291299
CommandLineParser parser = new DefaultParser();
@@ -312,6 +320,7 @@ private void checkOptions(String[] args) throws ParseException, IOException {
312320
if (line.hasOption("sink-disable-escape")) setSinkDisableEscapeNotNull(true);
313321
if (line.hasOption("sink-disable-truncate")) setSinkDisableTruncateNotNull(true);
314322
if (line.hasOption("sink-analyze")) setSinkAnalyzeNotNull(true);
323+
if (line.hasOption("quoted-identifiers")) setQuotedIdentifiers(true);
315324

316325
setModeNotNull(line.getOptionValue("mode"));
317326
setSinkColumnsNotNull(line.getOptionValue("sink-columns"));
@@ -426,6 +435,7 @@ private void loadOptionsFile() throws IOException {
426435
setJobs(prop.getProperty("jobs"));
427436
setFetchSize(prop.getProperty("fetch.size"));
428437
setBandwidthThrottling(prop.getProperty("bandwidth.throttling"));
438+
setQuotedIdentifiers(Boolean.parseBoolean(prop.getProperty("quoted.identifiers")));
429439

430440
// Connection params
431441
setSinkConnectionParams(of.getSinkConnectionParams());
@@ -828,6 +838,7 @@ public String toString() {
828838
",\n\tsinkAnalyze=" + sinkAnalyze +
829839
",\n\tjobs=" + jobs +
830840
",\n\tbandwidthThrottling=" + bandwidthThrottling +
841+
",\n\tquotedIdentifiers=" + quotedIdentifiers +
831842
",\n\tfetchSize=" + fetchSize +
832843
",\n\thelp=" + help +
833844
",\n\tversion=" + version +
@@ -860,4 +871,12 @@ public void setBandwidthThrottlingNotNull(String bandwidthThrottling) {
860871
if (bandwidthThrottling != null && !bandwidthThrottling.isEmpty())
861872
setBandwidthThrottling(bandwidthThrottling);
862873
}
874+
875+
public Boolean getQuotedIdentifiers() {
876+
return quotedIdentifiers;
877+
}
878+
879+
public void setQuotedIdentifiers(Boolean quotedIdentifiers) {
880+
this.quotedIdentifiers = quotedIdentifiers;
881+
}
863882
}

src/main/java/org/replicadb/manager/ConnManager.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,10 @@ private String getColumnsFromResultSetMetaData(ResultSetMetaData rsmd) throws SQ
198198

199199
for (int i = 1; i <= columnsNumber; i++) {
200200
if (i > 1) columnNames.append(",");
201-
columnNames.append(rsmd.getColumnName(i));
201+
if (this.options.getQuotedIdentifiers())
202+
columnNames.append("\"").append(rsmd.getColumnName(i)).append("\"");
203+
else
204+
columnNames.append(rsmd.getColumnName(i));
202205
}
203206
return columnNames.toString();
204207
}

src/main/java/org/replicadb/manager/SqlManager.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,10 @@ public String[] getPrimaryKeys(String table, String schema) {
347347
ArrayList<String> pks = new ArrayList<>();
348348
while (results.next()) {
349349
String pkName = results.getString("COLUMN_NAME");
350-
pks.add(pkName);
350+
if (this.options.getQuotedIdentifiers())
351+
pks.add("\""+ pkName +"\"");
352+
else
353+
pks.add(pkName);
351354
}
352355

353356
if (pks.isEmpty())

0 commit comments

Comments
 (0)