提交 b252eeac authored 作者: Noel Grandin's avatar Noel Grandin

start splitting up the test script file

上级 a189c7bd
...@@ -30,20 +30,21 @@ import org.h2.util.StringUtils; ...@@ -30,20 +30,21 @@ import org.h2.util.StringUtils;
*/ */
public class TestScript extends TestBase { public class TestScript extends TestBase {
private static final String FILENAME = "org/h2/test/scripts/testScript.sql"; private static final String BASE_DIR = "org/h2/test/scripts/";
/** If set to true, the test will exit at the first failure. */
private boolean failFast; private boolean failFast;
private final ArrayList<String> statements = New.arrayList();
private boolean reconnectOften; private boolean reconnectOften;
private Connection conn; private Connection conn;
private Statement stat; private Statement stat;
private LineNumberReader in; private LineNumberReader in;
private int line; private int outputLineNo;
private PrintStream out; private PrintStream out;
private final ArrayList<String[]> result = New.arrayList(); private final ArrayList<String[]> result = New.arrayList();
private String putBack; private String putBack;
private StringBuilder errors; private StringBuilder errors;
private ArrayList<String> statements;
private Random random = new Random(1); private Random random = new Random(1);
...@@ -64,8 +65,9 @@ public class TestScript extends TestBase { ...@@ -64,8 +65,9 @@ public class TestScript extends TestBase {
*/ */
public ArrayList<String> getAllStatements(TestAll conf) throws Exception { public ArrayList<String> getAllStatements(TestAll conf) throws Exception {
config = conf; config = conf;
statements = New.arrayList(); if (statements.isEmpty()) {
test(); test();
}
return statements; return statements;
} }
...@@ -74,24 +76,34 @@ public class TestScript extends TestBase { ...@@ -74,24 +76,34 @@ public class TestScript extends TestBase {
if (config.networked && config.big) { if (config.networked && config.big) {
return; return;
} }
reconnectOften = false; reconnectOften = !config.memory && config.big;
if (!config.memory) { testScript("testScript.sql");
if (config.big) { testScript("functions-system-rownum.sql");
reconnectOften = true; testScript("datatypes-enum.sql");
}
}
testScript();
deleteDb("script"); deleteDb("script");
System.out.flush();
} }
private void testScript() throws Exception { private void testScript(String scriptFileName) throws Exception {
deleteDb("script"); deleteDb("script");
String outFile = "test.out.txt";
// Reset all the state in case there is anything left over from the previous file we processed.
conn = null;
stat = null;
in = null;
outputLineNo = 0;
out = null;
result.clear();
putBack = null;
errors = null;
println("Running commands in " + scriptFileName);
final String outFile = "test.out.txt";
conn = getConnection("script"); conn = getConnection("script");
stat = conn.createStatement(); stat = conn.createStatement();
out = new PrintStream(new FileOutputStream(outFile)); out = new PrintStream(new FileOutputStream(outFile));
errors = new StringBuilder(); errors = new StringBuilder();
testFile(FILENAME); testFile(BASE_DIR + scriptFileName);
conn.close(); conn.close();
out.close(); out.close();
if (errors.length() > 0) { if (errors.length() > 0) {
...@@ -172,9 +184,7 @@ public class TestScript extends TestBase { ...@@ -172,9 +184,7 @@ public class TestScript extends TestBase {
} }
} }
} }
if (statements != null) { statements.add(sql);
statements.add(sql);
}
if (sql.indexOf('?') == -1) { if (sql.indexOf('?') == -1) {
processStatement(sql); processStatement(sql);
} else { } else {
...@@ -358,7 +368,7 @@ public class TestScript extends TestBase { ...@@ -358,7 +368,7 @@ public class TestScript extends TestBase {
return; return;
} }
errors.append("line: "); errors.append("line: ");
errors.append(line); errors.append(outputLineNo);
errors.append("\n" + "exp: "); errors.append("\n" + "exp: ");
errors.append(compare); errors.append(compare);
errors.append("\n" + "got: "); errors.append("\n" + "got: ");
...@@ -380,7 +390,7 @@ public class TestScript extends TestBase { ...@@ -380,7 +390,7 @@ public class TestScript extends TestBase {
} }
private void write(String s) { private void write(String s) {
line++; outputLineNo++;
out.println(s); out.println(s);
} }
......
----------------
--- ENUM support
----------------
--- ENUM basic operations
create table card (rank int, suit enum('hearts', 'clubs', 'spades'));
> ok
insert into card (rank, suit) values (0, 'clubs'), (3, 'hearts');
> update count: 2
alter table card alter column suit enum('hearts', 'clubs', 'spades', 'diamonds');
> ok
select * from card;
> RANK SUIT
> ---- ------
> 0 clubs
> 3 hearts
select * from card order by suit;
> RANK SUIT
> ---- ------
> 3 hearts
> 0 clubs
insert into card (rank, suit) values (8, 'diamonds'), (10, 'clubs'), (7, 'hearts');
> update count: 3
select suit, count(rank) from card group by suit order by suit, count(rank);
> SUIT COUNT(RANK)
> -------- -----------
> hearts 2
> clubs 2
> diamonds 1
select rank from card where suit = 'diamonds';
> RANK
> ----
> 8
--- ENUM integer-based operations
select rank from card where suit = 1;
> RANK
> ----
> 0
> 10
insert into card (rank, suit) values(5, 2);
> update count: 1
select * from card where rank = 5;
> RANK SUIT
> ---- ------
> 5 spades
--- ENUM edge cases
insert into card (rank, suit) values(6, ' ');
> exception
alter table card alter column suit enum('hearts', 'clubs', 'spades', 'diamonds', 'clubs');
> exception
alter table card alter column suit enum('hearts', 'clubs', 'spades', 'diamonds', '');
> exception
drop table card;
> ok
--- ENUM as custom user data type
create type CARD_SUIT as enum('hearts', 'clubs', 'spades', 'diamonds');
> ok
create table card (rank int, suit CARD_SUIT);
> ok
insert into card (rank, suit) values (0, 'clubs'), (3, 'hearts');
> update count: 2
select * from card;
> RANK SUIT
> ---- ------
> 0 clubs
> 3 hearts
drop table card;
> ok
drop type CARD_SUIT;
> ok
--- ENUM in primary key with another column
create type CARD_SUIT as enum('hearts', 'clubs', 'spades', 'diamonds');
> ok
create table card (rank int, suit CARD_SUIT, primary key(rank, suit));
> ok
insert into card (rank, suit) values (0, 'clubs'), (3, 'hearts'), (1, 'clubs');
> update count: 3
insert into card (rank, suit) values (0, 'clubs');
> exception
select rank from card where suit = 'clubs';
> RANK
> ----
> 0
> 1
drop table card;
> ok
drop type CARD_SUIT;
> ok
--- ENUM with index
create type CARD_SUIT as enum('hearts', 'clubs', 'spades', 'diamonds');
> ok
create table card (rank int, suit CARD_SUIT, primary key(rank, suit));
> ok
insert into card (rank, suit) values (0, 'clubs'), (3, 'hearts'), (1, 'clubs');
> update count: 3
create index idx_card_suite on card(`suit`);
select rank from card where suit = 'clubs';
> RANK
> ----
> 0
> 1
select rank from card where suit in ('clubs');
> RANK
> ----
> 0
> 1
drop table card;
> ok
drop type CARD_SUIT;
> ok
----- Issue#600 -----
create table test as (select char(x) as str from system_range(48,90));
> ok
select row_number() over () as rnum, str from test where str = 'A';
> RNUM STR
> ---- ---
> 1 A
drop table test;
> ok
...@@ -10593,156 +10593,6 @@ create table z.z (id int); ...@@ -10593,156 +10593,6 @@ create table z.z (id int);
drop schema z; drop schema z;
> ok > ok
----------------
--- ENUM support
----------------
--- ENUM basic operations
create table card (rank int, suit enum('hearts', 'clubs', 'spades'));
> ok
insert into card (rank, suit) values (0, 'clubs'), (3, 'hearts');
> update count: 2
alter table card alter column suit enum('hearts', 'clubs', 'spades', 'diamonds');
> ok
select * from card;
> RANK SUIT
> ---- ------
> 0 clubs
> 3 hearts
select * from card order by suit;
> RANK SUIT
> ---- ------
> 3 hearts
> 0 clubs
insert into card (rank, suit) values (8, 'diamonds'), (10, 'clubs'), (7, 'hearts');
> update count: 3
select suit, count(rank) from card group by suit order by suit, count(rank);
> SUIT COUNT(RANK)
> -------- -----------
> hearts 2
> clubs 2
> diamonds 1
select rank from card where suit = 'diamonds';
> RANK
> ----
> 8
--- ENUM integer-based operations
select rank from card where suit = 1;
> RANK
> ----
> 0
> 10
insert into card (rank, suit) values(5, 2);
> update count: 1
select * from card where rank = 5;
> RANK SUIT
> ---- ------
> 5 spades
--- ENUM edge cases
insert into card (rank, suit) values(6, ' ');
> exception
alter table card alter column suit enum('hearts', 'clubs', 'spades', 'diamonds', 'clubs');
> exception
alter table card alter column suit enum('hearts', 'clubs', 'spades', 'diamonds', '');
> exception
drop table card;
> ok
--- ENUM as custom user data type
create type CARD_SUIT as enum('hearts', 'clubs', 'spades', 'diamonds');
> ok
create table card (rank int, suit CARD_SUIT);
> ok
insert into card (rank, suit) values (0, 'clubs'), (3, 'hearts');
> update count: 2
select * from card;
> RANK SUIT
> ---- ------
> 0 clubs
> 3 hearts
drop table card;
> ok
drop type CARD_SUIT;
> ok
--- ENUM in primary key with another column
create type CARD_SUIT as enum('hearts', 'clubs', 'spades', 'diamonds');
> ok
create table card (rank int, suit CARD_SUIT, primary key(rank, suit));
> ok
insert into card (rank, suit) values (0, 'clubs'), (3, 'hearts'), (1, 'clubs');
> update count: 3
insert into card (rank, suit) values (0, 'clubs');
> exception
select rank from card where suit = 'clubs';
> RANK
> ----
> 0
> 1
drop table card;
> ok
drop type CARD_SUIT;
> ok
--- ENUM with index
create type CARD_SUIT as enum('hearts', 'clubs', 'spades', 'diamonds');
> ok
create table card (rank int, suit CARD_SUIT, primary key(rank, suit));
> ok
insert into card (rank, suit) values (0, 'clubs'), (3, 'hearts'), (1, 'clubs');
> update count: 3
create index idx_card_suite on card(`suit`);
select rank from card where suit = 'clubs';
> RANK
> ----
> 0
> 1
select rank from card where suit in ('clubs');
> RANK
> ----
> 0
> 1
drop table card;
> ok
drop type CARD_SUIT;
> ok
----- Issue#493 ----- ----- Issue#493 -----
create table test (year int, action varchar(10)); create table test (year int, action varchar(10));
> ok > ok
...@@ -10762,15 +10612,3 @@ select * from test where year in (select distinct year from test order by year d ...@@ -10762,15 +10612,3 @@ select * from test where year in (select distinct year from test order by year d
drop table test; drop table test;
> ok > ok
----- Issue#600 -----
create table test as (select char(x) as str from system_range(48,90));
> ok
select row_number() over () as rnum, str from test where str = 'A';
> RNUM STR
> ---- ---
> 1 A
drop table test;
> ok
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论