in spanner-data-validator-java/src/main/java/com/google/migration/JDBCToSpannerDVTWithHash.java [459:505]
protected static PCollection<HashResult> getJDBCRecords(String tableName,
PipelineTracker pipelineTracker,
String query,
Integer keyIndex,
String rangeFieldType,
DVTOptionsCore options,
PCollection<PartitionRange> pRanges,
Integer timestampThresholdKeyIndex,
CustomTransformation customTransformation,
Schema schema) {
String driver = POSTGRES_JDBC_DRIVER;
if(options.getProtocol().compareTo("mysql") == 0) {
driver = MYSQL_JDBC_DRIVER;
}
// https://stackoverflow.com/questions/68353660/zero-date-value-prohibited-hibernate-sql-jpa
String zeroDateTimeNullBehaviorStr = options.getZeroDateTimeBehavior() ? "?zeroDateTimeBehavior=CONVERT_TO_NULL" : "";
// JDBC conn string
String connString = String.format("jdbc:%s://%s:%d/%s%s", options.getProtocol(),
options.getServer(),
options.getPort(),
options.getSourceDB(),
zeroDateTimeNullBehaviorStr);
LOG.info(String.format("++++++++++++++++++++++++++++++++JDBC conn string: %s", connString));
String jdbcPass = Helpers.getJDBCPassword(options);
//Return the ResultSet back for custom transformations instead of computing HashResult here.
return getJDBCRecordsHelper(tableName,
pipelineTracker,
query,
keyIndex,
rangeFieldType,
options,
pRanges,
timestampThresholdKeyIndex,
customTransformation,
schema,
driver,
connString,
"0",
options.getUsername(),
jdbcPass);
}