提交 6b6b1d8f authored 作者: Owner's avatar Owner

Merge branch 'master' of https://github.com/h2database/h2database into Issue#589

...@@ -1380,6 +1380,10 @@ public class Parser { ...@@ -1380,6 +1380,10 @@ public class Parser {
} }
} }
} }
// inherit alias for temporary views (usually CTE's) from table name
if(table.isView() && table.isTemporary() && alias==null){
alias = table.getName();
}
return new TableFilter(session, table, alias, rightsChecked, return new TableFilter(session, table, alias, rightsChecked,
currentSelect, orderInFrom++, indexHints); currentSelect, orderInFrom++, indexHints);
} }
......
...@@ -40,6 +40,7 @@ public class TestGeneralCommonTableQueries extends TestBase { ...@@ -40,6 +40,7 @@ public class TestGeneralCommonTableQueries extends TestBase {
testDelete(); testDelete();
testMerge(); testMerge();
testCreateTable(); testCreateTable();
testNestedSQL();
} }
private void testSimpleSelect() throws Exception { private void testSimpleSelect() throws Exception {
...@@ -388,4 +389,53 @@ public class TestGeneralCommonTableQueries extends TestBase { ...@@ -388,4 +389,53 @@ public class TestGeneralCommonTableQueries extends TestBase {
conn.close(); conn.close();
deleteDb("commonTableExpressionQueries"); deleteDb("commonTableExpressionQueries");
} }
private void testNestedSQL() throws Exception {
deleteDb("commonTableExpressionQueries");
Connection conn = getConnection("commonTableExpressionQueries");
PreparedStatement prep;
ResultSet rs;
prep = conn.prepareStatement(
"WITH T1 AS ( "+
" SELECT * "+
" FROM TABLE ( "+
" K VARCHAR = ('a', 'b'), "+
" V INTEGER = (1, 2) "+
" ) "+
"), "+
" "+
" "+
"T2 AS ( "+
" SELECT * "+
" FROM TABLE ( "+
" K VARCHAR = ('a', 'b'), "+
" V INTEGER = (3, 4) "+
" ) "+
"), "+
" "+
" "+
"JOIN_CTE AS ( "+
" SELECT T1.* "+
" "+
" FROM "+
" T1 "+
" JOIN T2 ON ( "+
" T1.K = T2.K "+
" ) "+
") "+
" "+
"SELECT * FROM JOIN_CTE");
rs = prep.executeQuery();
for (String keyLetter : new String[] { "a", "b" }) {
assertTrue(rs.next());
assertContains("ab",rs.getString(1));
assertEquals(rs.getString(1),keyLetter);
assertTrue(rs.getInt(2)!=0);
}
conn.close();
deleteDb("commonTableExpressionQueries");
}
} }
\ No newline at end of file
...@@ -10333,8 +10333,8 @@ explain with recursive r(n) as ( ...@@ -10333,8 +10333,8 @@ explain with recursive r(n) as (
) )
select n from r; select n from r;
> PLAN > PLAN
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- > -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> WITH RECURSIVE R(N) AS ( (SELECT 1 FROM SYSTEM_RANGE(1, 1) /* PUBLIC.RANGE_INDEX */) UNION ALL (SELECT (N + 1) FROM PUBLIC.R /* PUBLIC.R.tableScan */ WHERE N < 3) ) SELECT N FROM R /* null */ > WITH RECURSIVE R(N) AS ( (SELECT 1 FROM SYSTEM_RANGE(1, 1) /* PUBLIC.RANGE_INDEX */) UNION ALL (SELECT (N + 1) FROM PUBLIC.R /* PUBLIC.R.tableScan */ WHERE N < 3) ) SELECT N FROM R R /* null */
> rows: 1 > rows: 1
select sum(n) from ( select sum(n) from (
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论