|
@@ -4,6 +4,7 @@ import org.dbsyncer.common.util.StringUtil;
|
|
|
import org.dbsyncer.connector.config.CommandConfig;
|
|
|
import org.dbsyncer.connector.config.DatabaseConfig;
|
|
|
import org.dbsyncer.connector.config.ReaderConfig;
|
|
|
+import org.dbsyncer.connector.constant.DatabaseConstant;
|
|
|
import org.dbsyncer.connector.database.AbstractDatabaseConnector;
|
|
|
import org.dbsyncer.connector.enums.TableTypeEnum;
|
|
|
import org.dbsyncer.connector.model.PageSql;
|
|
@@ -26,28 +27,27 @@ public final class PostgreSQLConnector extends AbstractDatabaseConnector {
|
|
|
|
|
|
@Override
|
|
|
public String getPageSql(PageSql config) {
|
|
|
- final String quotation = buildSqlWithQuotation();
|
|
|
+ final String quotation = config.getQuotation();
|
|
|
final List<String> primaryKeys = config.getPrimaryKeys();
|
|
|
- // select * from test.`my_user` where `id` > ? and `uid` > ? order by `id`,`uid` limit ?
|
|
|
+ // select * from test."my_user" where "id" > ? and "uid" > ? order by "id","uid" limit ? OFFSET ?
|
|
|
StringBuilder sql = new StringBuilder(config.getQuerySql());
|
|
|
- boolean blank = StringUtil.isBlank(config.getSqlBuilderConfig().getQueryFilter());
|
|
|
- sql.append(blank ? " WHERE " : " AND ");
|
|
|
- PrimaryKeyUtil.buildSql(sql, primaryKeys, quotation, " AND ", " > ? ", blank);
|
|
|
sql.append(" ORDER BY ");
|
|
|
- // id,uid
|
|
|
PrimaryKeyUtil.buildSql(sql, primaryKeys, quotation, ",", "", true);
|
|
|
- sql.append(" LIMIT ?");
|
|
|
+ sql.append(DatabaseConstant.POSTGRESQL_PAGE_SQL);
|
|
|
return sql.toString();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public String getPageCursorSql(PageSql config) {
|
|
|
- final String quotation = buildSqlWithQuotation();
|
|
|
+ final String quotation = config.getQuotation();
|
|
|
final List<String> primaryKeys = config.getPrimaryKeys();
|
|
|
- // select * from test.`my_user` order by `id`,`uid` limit ?
|
|
|
- StringBuilder sql = new StringBuilder(config.getQuerySql()).append(" ORDER BY ");
|
|
|
+ // select * from test."my_user" where "id" > ? and "uid" > ? order by "id","uid" limit ? OFFSET ?
|
|
|
+ StringBuilder sql = new StringBuilder(config.getQuerySql());
|
|
|
+ boolean hasFilter = StringUtil.isNotBlank(config.getSqlBuilderConfig().getQueryFilter());
|
|
|
+ PrimaryKeyUtil.buildSql(sql, primaryKeys, quotation, " AND ", " > ? ", !hasFilter);
|
|
|
+ sql.append(" ORDER BY ");
|
|
|
PrimaryKeyUtil.buildSql(sql, primaryKeys, quotation, ",", "", true);
|
|
|
- sql.append(" LIMIT ?");
|
|
|
+ sql.append(DatabaseConstant.POSTGRESQL_PAGE_SQL);
|
|
|
return sql.toString();
|
|
|
}
|
|
|
|