in src/main/java/com/datacompare/service/FetchMetadata.java [168:233]
private void prepareQuery(Connection connection, String schemaName, String tableName, String sortKey,
String primaryKey, String uniqueKeyCol, String filter, String filterType, long rowCount,
Map<String, TableColumnMetadata> sourceTableMetadataMap) throws SQLException {
String query = null;
String sortCols = null;
String cols = null;
switch (getDbType()) {
case "POSTGRESQL":
sortCols = replaceColumnWithHash(getTargetColumns(sourceTableMetadataMap,true));
cols = replaceColumnWithHash(getTargetColumns(sourceTableMetadataMap,false));
uniqueKeyCol=replaceColumnWithHash(uniqueKeyCol);
query = "SELECT " + uniqueKeyCol + cols + " FROM " + schemaName + "." + tableName;
if(isHasNoUniqueKey()) {
String subQuery = "SELECT " + uniqueKeyCol + cols + " FROM (" + "SELECT " + cols + " FROM " + schemaName + "." + tableName + " order by " + sortCols + ") t1";
query = "SELECT t2.* FROM (" + subQuery + ") t2";
}
generateChunksPostgresql(connection, schemaName, tableName, rowCount, filter);
break;
case "ORACLE":
sortCols = getSourceColumns(true);
cols=getSourceColumns(false);
query = "SELECT " + uniqueKeyCol + cols + " FROM " + schemaName + "." + tableName;
if(isHasNoUniqueKey()) {
String subQuery = "SELECT " + uniqueKeyCol + cols + " FROM (" + "SELECT " + cols + " FROM " + schemaName + "." + tableName + " order by " + sortCols + ")";
query = "SELECT * FROM (" + subQuery + ")";
}
generateSourceChunks(connection, schemaName, tableName, sortKey, primaryKey, filter, filterType, sortCols);
break;
case "SQLSERVER":
cols = getSourceColumns(false);
sortCols=getSourceColumns(true);
query = "SELECT " + uniqueKeyCol + cols + " FROM " + schemaName + "." + tableName;
//TODO
if(isHasNoUniqueKey()) {
String subQuery = "SELECT " + uniqueKeyCol + cols + " FROM (" + "SELECT " + cols + " FROM " + schemaName + "." + tableName + ") t1";
query = "SELECT t2.* FROM (" + subQuery + " order by " + sortCols + ") t2";
}
generateSourceChunks(connection, schemaName, tableName, sortKey, primaryKey, filter, filterType, sortCols);
break;
}
setSql(query);
logger.info("\n" + getDbType() + ": SQL Query without chunk: " + getSql());
}