diff --git a/README.md b/README.md index a316a14..c51da32 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ io.github.osinn druid-multi-tenant-starter - 1.4.1 + 1.4.2 ``` diff --git a/pom.xml b/pom.xml index 3580fd3..4ba7210 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ io.github.osinn druid-multi-tenant-starter - 1.4.1 + 1.4.2 druid-multi-tenant-starter druid-multi-tenant-starter diff --git a/src/main/java/com/github/osinn/druid/multi/tenant/plugin/parser/DefaultSqlParser.java b/src/main/java/com/github/osinn/druid/multi/tenant/plugin/parser/DefaultSqlParser.java index 5e39171..17016b8 100644 --- a/src/main/java/com/github/osinn/druid/multi/tenant/plugin/parser/DefaultSqlParser.java +++ b/src/main/java/com/github/osinn/druid/multi/tenant/plugin/parser/DefaultSqlParser.java @@ -41,14 +41,11 @@ public String setTenantParameter(String sql) { if (statement instanceof SQLSelectStatement) { SQLSelectStatement sqlSelectStatement = (SQLSelectStatement) statement; processSelectBody(sqlSelectStatement.getSelect().getQuery()); - } - if (statement instanceof SQLInsertStatement) { + } else if (statement instanceof SQLInsertStatement) { processInsert((SQLInsertStatement) statement); - } - if (statement instanceof SQLUpdateStatement) { + } else if (statement instanceof SQLUpdateStatement) { processUpdate((SQLUpdateStatement) statement); - } - if (statement instanceof SQLDeleteStatement) { + } else if (statement instanceof SQLDeleteStatement) { processDelete((SQLDeleteStatement) statement); } return statement.toString(); @@ -500,6 +497,9 @@ private String getAlias(SQLTableSource sqlTableSource) { } else if (sqlJoinTableSource.getLeft() instanceof SQLExprTableSource) { SQLExprTableSource sqlExprTableSource = (SQLExprTableSource) sqlJoinTableSource.getLeft(); return sqlExprTableSource.getAlias(); + } else if (sqlJoinTableSource.getLeft() instanceof SQLSubqueryTableSource) { + SQLSubqueryTableSource sqlSubqueryTableSource = (SQLSubqueryTableSource) sqlJoinTableSource.getLeft(); + return sqlSubqueryTableSource.getAlias(); } else { return sqlJoinTableSource.getAlias(); } diff --git a/src/test/java/com/github/osinn/osinn/sqlparser/test/TenantDemo.java b/src/test/java/com/github/osinn/osinn/sqlparser/test/TenantDemo.java index 4eff89e..36d7848 100644 --- a/src/test/java/com/github/osinn/osinn/sqlparser/test/TenantDemo.java +++ b/src/test/java/com/github/osinn/osinn/sqlparser/test/TenantDemo.java @@ -80,6 +80,12 @@ public class TenantDemo { private static final String sql39 = "SELECT id, name,tenant_id FROM role temp"; + private static final String sql40 = "SELECT *\n" + + " from\n" + + " (SELECT * from test_t1) a \n" + + " LEFT JOIN test_t2 pd ON a.depository_id = pd.id\n" + + " LEFT JOIN test_t3 pi ON a.order_no = pi.order_no\n" + + " ORDER BY a.part_no"; public static void main(String[] args) { DefaultSqlParser defaultSqlParser = new DefaultSqlParser(); @@ -90,7 +96,7 @@ public List getTenantIds() { Long tenantId2 = 1540616731523944448L; List tenantIdList = new ArrayList<>(); tenantIdList.add(tenantId); - tenantIdList.add(tenantId2); +// tenantIdList.add(tenantId2); return tenantIdList; } @@ -194,6 +200,7 @@ public String getTenantIdColumn() { System.out.println(defaultSqlParser.setTenantParameter(sql38)); System.out.println("------------------------------------- \n"); System.out.println(defaultSqlParser.setTenantParameter(sql39)); + System.out.println(defaultSqlParser.setTenantParameter(sql40)); } }