Skip to content

Commit 97005ca

Browse files
authored
Add more tests to TablesNamesFinderTest for SubqueryAliasesIssue1987 (#2154)
1 parent 4492e74 commit 97005ca

File tree

2 files changed

+72
-0
lines changed

2 files changed

+72
-0
lines changed

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,6 @@
3232
/nbproject/
3333

3434
/.gradle
35+
36+
# Mac
37+
.DS_Store

src/test/java/net/sf/jsqlparser/util/TablesNamesFinderTest.java

+69
Original file line numberDiff line numberDiff line change
@@ -505,6 +505,75 @@ void testSubqueryAliasesIssue1987() throws JSQLParserException {
505505
tables = TablesNamesFinder.findTables(sqlStr);
506506
assertThat(tables).containsExactlyInAnyOrder("a", "b");
507507
assertThat(tables).doesNotContain("a1");
508+
509+
sqlStr = "select (a_alias.col1), b_alias.col2\n" +
510+
"from b b_alias, a as a_alias, c join b on c.id = b.id\n" +
511+
"where b_alias.id = a_alias.id and c.id = b_alias.id";
512+
tables = TablesNamesFinder.findTables(sqlStr);
513+
assertThat(tables).containsExactlyInAnyOrder("a", "b", "c");
514+
515+
sqlStr = "with\n" +
516+
"temp1 as (( select * from b )),\n" +
517+
"temp2 as ( select (((temp1_alias1.id))) from temp1 temp1_alias1 )\n" +
518+
"select a_alias.col1, temp1_alias2.col2\n" +
519+
"from temp1 temp1_alias2, a as a_alias, temp2 join c c_alias on c_alias.id = temp2.id\n"
520+
+
521+
"where c.id = temp1_alias2.id";
522+
tables = TablesNamesFinder.findTables(sqlStr);
523+
assertThat(tables).containsExactlyInAnyOrder("a", "b", "c");
524+
525+
sqlStr = "select a.id, (select max(val) from e) as maxval\n" +
526+
"from a, (select * from b, (select * from c) c_alias) as bc_nested\n" +
527+
" where a.id in ( select id from bc_nested join (select * from d) d_alias on bc_nested.id = d_alias.id ) \n"
528+
+
529+
" and a.max > (select max(val) from bc_nested, f) and a.desc like 'abc'";
530+
tables = TablesNamesFinder.findTables(sqlStr);
531+
assertThat(tables).containsExactlyInAnyOrder("a", "b", "c", "d", "e", "f");
532+
533+
sqlStr = " select (select max(val) from e) as maxval, id\n" +
534+
" from (select * from b, (select * from c) c_alias) as bc_nested, a\n" +
535+
" where a.max > (select max(val) from bc_nested, f) and \n" +
536+
" a.id in ( select id from (select * from d) d_alias join bc_nested on bc_nested.id = d_alias.id )";
537+
tables = TablesNamesFinder.findTables(sqlStr);
538+
assertThat(tables).containsExactlyInAnyOrder("a", "b", "c", "d", "e", "f");
539+
540+
sqlStr = "select a.id, bc_nested.id\n" +
541+
" from (select * from b, (select * from c) c_alias) as bc_nested, a\n" +
542+
" where a.id in (((\n" +
543+
" select id from d join \n" +
544+
" (select * from bc_nested join \n" +
545+
" (select * from e) e_alias on bc_nested.id = e_alias.id\n" +
546+
" ) bc_nested_alias \n" +
547+
" on bc_nested_alias.id = d.id\n" +
548+
" )))";
549+
tables = TablesNamesFinder.findTables(sqlStr);
550+
assertThat(tables).containsExactlyInAnyOrder("a", "b", "c", "d", "e");
551+
552+
sqlStr = "select id\n" +
553+
"from (select * from c, (select * from b) b_alias) as bc_nested, a\n" +
554+
"where a.id in (\n" +
555+
"select id from (select * from d \n" +
556+
"join (select * from e) e_alias on d.id = e_alias.id) bc_nested_alias\n" +
557+
"join bc_nested on bc_nested_alias.id = bc_nested.id\n" +
558+
")";
559+
tables = TablesNamesFinder.findTables(sqlStr);
560+
assertThat(tables).containsExactlyInAnyOrder("a", "b", "c", "d", "e");
561+
562+
sqlStr = "with\n" +
563+
" temp1 as (\n" +
564+
" select a1.id as id, b.content as content from a a1\n" +
565+
" join b on a1.id = b.id\n" +
566+
" ),\n" +
567+
" temp2 as (\n" +
568+
" select b.id as id, b.value as value from b, c cross join temp1 where\n" +
569+
" b.id = c.id and b.value = \"b.value\"\n" +
570+
" )\n" +
571+
"select temp1.id, ( select tid from d where cid = 29974 ) as tid \n" +
572+
"from ( select tid from e, (select * from f) where cid = 29974) e_alias, temp1 cross join temp2\n"
573+
+
574+
"where exist ( select * from e, e_alias where e.test = dtest.test ) and temp1.max = (select max(column_1) from g)";
575+
tables = TablesNamesFinder.findTables(sqlStr);
576+
assertThat(tables).containsExactlyInAnyOrder("a", "b", "c", "d", "e", "f", "g");
508577
}
509578

510579
@Test

0 commit comments

Comments
 (0)