20
20
import java .util .Map ;
21
21
import java .util .Properties ;
22
22
import 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 ;
23
26
24
27
/** These tests are designed to stress Statements on memory databases. */
25
28
public class DBMetaDataTest {
@@ -417,7 +420,21 @@ public void getColumns() throws SQLException {
417
420
assertThat (rs .next ()).isFalse ();
418
421
419
422
rs = meta .getColumns (null , null , "%" , "%" );
420
- // SYSTEM TABLE "sqlite_schema"
423
+
424
+ // SYSTEM TABLE "sqlite_schema" for main
425
+ assertThat (rs .next ()).isTrue ();
426
+ assertThat (rs .getString ("TABLE_NAME" )).isEqualTo ("sqlite_schema" );
427
+ assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("type" );
428
+ assertThat (rs .next ()).isTrue ();
429
+ assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("name" );
430
+ assertThat (rs .next ()).isTrue ();
431
+ assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("tbl_name" );
432
+ assertThat (rs .next ()).isTrue ();
433
+ assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("rootpage" );
434
+ assertThat (rs .next ()).isTrue ();
435
+ assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("sql" );
436
+
437
+ // SYSTEM TABLE "sqlite_schema" for temp
421
438
assertThat (rs .next ()).isTrue ();
422
439
assertThat (rs .getString ("TABLE_NAME" )).isEqualTo ("sqlite_schema" );
423
440
assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("type" );
@@ -429,6 +446,7 @@ public void getColumns() throws SQLException {
429
446
assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("rootpage" );
430
447
assertThat (rs .next ()).isTrue ();
431
448
assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("sql" );
449
+
432
450
// TABLE "test"
433
451
assertThat (rs .next ()).isTrue ();
434
452
assertThat (rs .getString ("TABLE_NAME" )).isEqualTo ("test" );
@@ -2041,8 +2059,19 @@ public void getColumnsForAttachedDatabaseTables() throws SQLException {
2041
2059
assertThat (rs .next ()).isFalse ();
2042
2060
rs .close ();
2043
2061
2044
-
2045
2062
rs = meta .getColumns (null , "db2" , "%" , "%" );
2063
+ assertThat (rs .next ()).isTrue ();
2064
+ assertThat (rs .getString ("TABLE_NAME" )).isEqualTo ("sqlite_schema" );
2065
+ assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("type" );
2066
+ assertThat (rs .next ()).isTrue ();
2067
+ assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("name" );
2068
+ assertThat (rs .next ()).isTrue ();
2069
+ assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("tbl_name" );
2070
+ assertThat (rs .next ()).isTrue ();
2071
+ assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("rootpage" );
2072
+ assertThat (rs .next ()).isTrue ();
2073
+ assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("sql" );
2074
+
2046
2075
// TABLE "test2"
2047
2076
assertThat (rs .next ()).isTrue ();
2048
2077
assertThat (rs .getString ("TABLE_NAME" )).isEqualTo ("test2" );
@@ -2077,14 +2106,18 @@ public void getColumnsForAttachedDatabaseTables() throws SQLException {
2077
2106
2078
2107
2079
2108
rs = meta .getColumns (null , null , "%" , "%" );
2080
- assertReadsAllColumns (rs );
2109
+ assertReadsAllColumns (rs , 3 );
2081
2110
rs = meta .getColumns (null , "%" , "%" , "%" );
2082
- assertReadsAllColumns (rs );
2111
+ assertReadsAllColumns (rs , 3 );
2083
2112
rs = meta .getColumns (null , "\\ %" , "%" , "%" );
2084
2113
assertThat (rs .next ()).isFalse ();
2085
2114
}
2086
2115
2087
- private void assertReadsAllColumns (ResultSet rs ) throws SQLException {
2116
+ private void assertReadsAllColumns (ResultSet rs , int schemasNumber ) throws SQLException {
2117
+ for (int i = 0 ; i < schemasNumber ; i ++) {
2118
+ // When full pattern used we acquire system table for each individual schema
2119
+ assertSystemSchema (rs );
2120
+ }
2088
2121
// TABLE "test"
2089
2122
assertThat (rs .next ()).isTrue ();
2090
2123
assertThat (rs .getString ("TABLE_NAME" )).isEqualTo ("test" );
@@ -2097,6 +2130,8 @@ private void assertReadsAllColumns(ResultSet rs) throws SQLException {
2097
2130
assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("intvalue" );
2098
2131
assertThat (rs .next ()).isTrue ();
2099
2132
assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("realvalue" );
2133
+ assertThat (rs .next ()).isTrue ();
2134
+ assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("charvalue" );
2100
2135
// TABLE "test2"
2101
2136
assertThat (rs .next ()).isTrue ();
2102
2137
assertThat (rs .getString ("TABLE_NAME" )).isEqualTo ("test2" );
@@ -2121,6 +2156,8 @@ private void assertReadsAllColumns(ResultSet rs) throws SQLException {
2121
2156
assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("intvalue" );
2122
2157
assertThat (rs .next ()).isTrue ();
2123
2158
assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("realvalue" );
2159
+ assertThat (rs .next ()).isTrue ();
2160
+ assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("charvalue" );
2124
2161
// VIEW "testView2"
2125
2162
assertThat (rs .next ()).isTrue ();
2126
2163
assertThat (rs .getString ("TABLE_NAME" )).isEqualTo ("testView2" );
@@ -2241,4 +2278,18 @@ public void exit() throws SQLException {
2241
2278
testDB .deleteOnExit ();
2242
2279
}
2243
2280
}
2281
+
2282
+ private void assertSystemSchema (ResultSet rs ) throws SQLException {
2283
+ assertThat (rs .next ()).isTrue ();
2284
+ assertThat (rs .getString ("TABLE_NAME" )).isEqualTo ("sqlite_schema" );
2285
+ assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("type" );
2286
+ assertThat (rs .next ()).isTrue ();
2287
+ assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("name" );
2288
+ assertThat (rs .next ()).isTrue ();
2289
+ assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("tbl_name" );
2290
+ assertThat (rs .next ()).isTrue ();
2291
+ assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("rootpage" );
2292
+ assertThat (rs .next ()).isTrue ();
2293
+ assertThat (rs .getString ("COLUMN_NAME" )).isEqualTo ("sql" );
2294
+ }
2244
2295
}
0 commit comments