Loading sharding-jdbc-config-parent/pom.xml +2 −2 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ <dependency> <groupId>com.dangdang</groupId> <artifactId>sharding-jdbc</artifactId> <version>${project.version}</version> <version>${project.parent.version}</version> <type>pom</type> <scope>import</scope> </dependency> Loading sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/jdbc/adapter/AbstractRowSetResultSetAdapter.java +1 −1 Original line number Diff line number Diff line Loading @@ -168,7 +168,7 @@ public abstract class AbstractRowSetResultSetAdapter extends AbstractUnsupported public boolean getBoolean(final int columnIndex) throws SQLException { Object cell = getObject(columnIndex); if (null == cell) { wasNullFlag = false; wasNullFlag = true; return false; } return (cell instanceof Boolean) ? (Boolean) cell : Boolean.valueOf(cell.toString()); Loading sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/merger/ResultSetFactory.java +10 −4 Original line number Diff line number Diff line Loading @@ -59,7 +59,7 @@ public final class ResultSetFactory { } if (1 == filteredResultSets.size()) { log.trace("Sharding-JDBC: Only one result set"); return filteredResultSets.get(0); return joinLimit(filteredResultSets.get(0), mergeContext); } mergeContext.buildContextWithResultSet((WrapperResultSet) filteredResultSets.get(0)); return buildCoupling(buildReducer(filteredResultSets, mergeContext), mergeContext); Loading Loading @@ -97,9 +97,7 @@ public final class ResultSetFactory { if (mergeContext.needToSort()) { currentResultSet = join(new MemoryOrderByCouplingResultSet(mergeContext.getCurrentOrderByKeys()), currentResultSet); } if (mergeContext.hasLimit()) { currentResultSet = join(new LimitCouplingResultSet(mergeContext.getLimit()), currentResultSet); } currentResultSet = joinLimit(currentResultSet, mergeContext); return currentResultSet; } Loading @@ -108,4 +106,12 @@ public final class ResultSetFactory { resultSet.init(preResultSet); return resultSet; } private static ResultSet joinLimit(final ResultSet preResultSet, final MergeContext mergeContext) throws SQLException { if (mergeContext.hasLimit()) { return join(new LimitCouplingResultSet(mergeContext.getLimit()), preResultSet); } else { return preResultSet; } } } sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/visitor/basic/mysql/AbstractMySQLVisitor.java +3 −0 Original line number Diff line number Diff line Loading @@ -108,6 +108,9 @@ public abstract class AbstractMySQLVisitor extends MySqlOutputVisitor implements @Override public final boolean visit(final SQLExprTableSource x) { if ("dual".equalsIgnoreCase(SQLUtil.getExactlyValue(x.getExpr().toString()))) { return super.visit(x); } return visit(x, getParseContext().addTable(x)); } Loading sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/visitor/basic/mysql/MySQLInsertVisitor.java +3 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,9 @@ public class MySQLInsertVisitor extends AbstractMySQLVisitor { @Override public boolean visit(final MySqlInsertStatement x) { getParseContext().setCurrentTable(x.getTableName().toString(), Optional.fromNullable(x.getAlias())); if (null == x.getValues()) { return super.visit(x); } for (int i = 0; i < x.getColumns().size(); i++) { getParseContext().addCondition(x.getColumns().get(i).toString(), x.getTableName().toString(), BinaryOperator.EQUAL, x.getValues().getValues().get(i), getDatabaseType(), getParameters()); } Loading Loading
sharding-jdbc-config-parent/pom.xml +2 −2 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ <dependency> <groupId>com.dangdang</groupId> <artifactId>sharding-jdbc</artifactId> <version>${project.version}</version> <version>${project.parent.version}</version> <type>pom</type> <scope>import</scope> </dependency> Loading
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/jdbc/adapter/AbstractRowSetResultSetAdapter.java +1 −1 Original line number Diff line number Diff line Loading @@ -168,7 +168,7 @@ public abstract class AbstractRowSetResultSetAdapter extends AbstractUnsupported public boolean getBoolean(final int columnIndex) throws SQLException { Object cell = getObject(columnIndex); if (null == cell) { wasNullFlag = false; wasNullFlag = true; return false; } return (cell instanceof Boolean) ? (Boolean) cell : Boolean.valueOf(cell.toString()); Loading
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/merger/ResultSetFactory.java +10 −4 Original line number Diff line number Diff line Loading @@ -59,7 +59,7 @@ public final class ResultSetFactory { } if (1 == filteredResultSets.size()) { log.trace("Sharding-JDBC: Only one result set"); return filteredResultSets.get(0); return joinLimit(filteredResultSets.get(0), mergeContext); } mergeContext.buildContextWithResultSet((WrapperResultSet) filteredResultSets.get(0)); return buildCoupling(buildReducer(filteredResultSets, mergeContext), mergeContext); Loading Loading @@ -97,9 +97,7 @@ public final class ResultSetFactory { if (mergeContext.needToSort()) { currentResultSet = join(new MemoryOrderByCouplingResultSet(mergeContext.getCurrentOrderByKeys()), currentResultSet); } if (mergeContext.hasLimit()) { currentResultSet = join(new LimitCouplingResultSet(mergeContext.getLimit()), currentResultSet); } currentResultSet = joinLimit(currentResultSet, mergeContext); return currentResultSet; } Loading @@ -108,4 +106,12 @@ public final class ResultSetFactory { resultSet.init(preResultSet); return resultSet; } private static ResultSet joinLimit(final ResultSet preResultSet, final MergeContext mergeContext) throws SQLException { if (mergeContext.hasLimit()) { return join(new LimitCouplingResultSet(mergeContext.getLimit()), preResultSet); } else { return preResultSet; } } }
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/visitor/basic/mysql/AbstractMySQLVisitor.java +3 −0 Original line number Diff line number Diff line Loading @@ -108,6 +108,9 @@ public abstract class AbstractMySQLVisitor extends MySqlOutputVisitor implements @Override public final boolean visit(final SQLExprTableSource x) { if ("dual".equalsIgnoreCase(SQLUtil.getExactlyValue(x.getExpr().toString()))) { return super.visit(x); } return visit(x, getParseContext().addTable(x)); } Loading
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/visitor/basic/mysql/MySQLInsertVisitor.java +3 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,9 @@ public class MySQLInsertVisitor extends AbstractMySQLVisitor { @Override public boolean visit(final MySqlInsertStatement x) { getParseContext().setCurrentTable(x.getTableName().toString(), Optional.fromNullable(x.getAlias())); if (null == x.getValues()) { return super.visit(x); } for (int i = 0; i < x.getColumns().size(); i++) { getParseContext().addCondition(x.getColumns().get(i).toString(), x.getTableName().toString(), BinaryOperator.EQUAL, x.getValues().getValues().get(i), getDatabaseType(), getParameters()); } Loading