2020import java .util .Map ;
2121import java .util .Properties ;
2222import org .junit .jupiter .api .*;
23+ import org .junit .jupiter .api .condition .DisabledInNativeImage ;
24+ import org .junit .jupiter .params .ParameterizedTest ;
25+ import org .junit .jupiter .params .provider .ValueSource ;
2326
2427/** These tests are designed to stress Statements on memory databases. */
2528public class DBMetaDataTest {
@@ -417,18 +420,13 @@ public void getColumns() throws SQLException {
417420 assertThat (rs .next ()).isFalse ();
418421
419422 rs = meta .getColumns (null , null , "%" , "%" );
420- // SYSTEM TABLE "sqlite_schema"
421- assertThat (rs .next ()).isTrue ();
422- assertThat (rs .getString ("TABLE_NAME" )).isEqualTo ("sqlite_schema" );
423- assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("type" );
424- assertThat (rs .next ()).isTrue ();
425- assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("name" );
426- assertThat (rs .next ()).isTrue ();
427- assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("tbl_name" );
428- assertThat (rs .next ()).isTrue ();
429- assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("rootpage" );
430- assertThat (rs .next ()).isTrue ();
431- assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("sql" );
423+
424+ // SYSTEM TABLE "sqlite_schema" for main
425+ assertSystemSchema (rs );
426+
427+ // SYSTEM TABLE "sqlite_schema" for temp
428+ assertSystemSchema (rs );
429+
432430 // TABLE "test"
433431 assertThat (rs .next ()).isTrue ();
434432 assertThat (rs .getString ("TABLE_NAME" )).isEqualTo ("test" );
@@ -2041,8 +2039,9 @@ public void getColumnsForAttachedDatabaseTables() throws SQLException {
20412039 assertThat (rs .next ()).isFalse ();
20422040 rs .close ();
20432041
2044-
20452042 rs = meta .getColumns (null , "db2" , "%" , "%" );
2043+ assertSystemSchema (rs );
2044+
20462045 // TABLE "test2"
20472046 assertThat (rs .next ()).isTrue ();
20482047 assertThat (rs .getString ("TABLE_NAME" )).isEqualTo ("test2" );
@@ -2077,14 +2076,18 @@ public void getColumnsForAttachedDatabaseTables() throws SQLException {
20772076
20782077
20792078 rs = meta .getColumns (null , null , "%" , "%" );
2080- assertReadsAllColumns (rs );
2079+ assertReadsAllColumns (rs , 3 );
20812080 rs = meta .getColumns (null , "%" , "%" , "%" );
2082- assertReadsAllColumns (rs );
2081+ assertReadsAllColumns (rs , 3 );
20832082 rs = meta .getColumns (null , "\\ %" , "%" , "%" );
20842083 assertThat (rs .next ()).isFalse ();
20852084 }
20862085
2087- private void assertReadsAllColumns (ResultSet rs ) throws SQLException {
2086+ private void assertReadsAllColumns (ResultSet rs , int schemasNumber ) throws SQLException {
2087+ for (int i = 0 ; i < schemasNumber ; i ++) {
2088+ // When full pattern used we acquire system table for each individual schema
2089+ assertSystemSchema (rs );
2090+ }
20882091 // TABLE "test"
20892092 assertThat (rs .next ()).isTrue ();
20902093 assertThat (rs .getString ("TABLE_NAME" )).isEqualTo ("test" );
@@ -2097,6 +2100,8 @@ private void assertReadsAllColumns(ResultSet rs) throws SQLException {
20972100 assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("intvalue" );
20982101 assertThat (rs .next ()).isTrue ();
20992102 assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("realvalue" );
2103+ assertThat (rs .next ()).isTrue ();
2104+ assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("charvalue" );
21002105 // TABLE "test2"
21012106 assertThat (rs .next ()).isTrue ();
21022107 assertThat (rs .getString ("TABLE_NAME" )).isEqualTo ("test2" );
@@ -2121,6 +2126,8 @@ private void assertReadsAllColumns(ResultSet rs) throws SQLException {
21212126 assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("intvalue" );
21222127 assertThat (rs .next ()).isTrue ();
21232128 assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("realvalue" );
2129+ assertThat (rs .next ()).isTrue ();
2130+ assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("charvalue" );
21242131 // VIEW "testView2"
21252132 assertThat (rs .next ()).isTrue ();
21262133 assertThat (rs .getString ("TABLE_NAME" )).isEqualTo ("testView2" );
@@ -2241,4 +2248,18 @@ public void exit() throws SQLException {
22412248 testDB .deleteOnExit ();
22422249 }
22432250 }
2251+
2252+ private void assertSystemSchema (ResultSet rs ) throws SQLException {
2253+ assertThat (rs .next ()).isTrue ();
2254+ assertThat (rs .getString ("TABLE_NAME" )).isEqualTo ("sqlite_schema" );
2255+ assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("type" );
2256+ assertThat (rs .next ()).isTrue ();
2257+ assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("name" );
2258+ assertThat (rs .next ()).isTrue ();
2259+ assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("tbl_name" );
2260+ assertThat (rs .next ()).isTrue ();
2261+ assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("rootpage" );
2262+ assertThat (rs .next ()).isTrue ();
2263+ assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("sql" );
2264+ }
22442265}
0 commit comments