Skip to content

Commit 479e885

Browse files
authored
Merge pull request #1 from ant-zuev/add_tests_derived_table
Add tests derived table
2 parents b78fac9 + c889f96 commit 479e885

File tree

5 files changed

+276
-0
lines changed

5 files changed

+276
-0
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
#coding:utf-8
2+
3+
"""
4+
ID: derived-table-23
5+
TITLE: Derived table with outer reference from JOIN.
6+
DESCRIPTION: Outer reference inside derived table to other relations in from clause is not allowed.
7+
FBTEST: functional.arno.derived_tables.25
8+
"""
9+
10+
import pytest
11+
from firebird.qa import *
12+
13+
init_script = """CREATE TABLE Table_10 (
14+
ID INTEGER NOT NULL,
15+
DESCRIPTION VARCHAR(10)
16+
);
17+
18+
COMMIT;
19+
20+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (0, NULL);
21+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (1, 'one');
22+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (2, 'two');
23+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (3, 'three');
24+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (4, 'four');
25+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (5, 'five');
26+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (6, 'six');
27+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (7, 'seven');
28+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (8, 'eight');
29+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (9, 'nine');
30+
31+
COMMIT;"""
32+
33+
db = db_factory(init=init_script)
34+
35+
test_script = """SELECT
36+
dt.*
37+
FROM
38+
Table_10 t10
39+
JOIN (SELECT * FROM Table_10 t2 WHERE t2.ID = t10.ID) dt ON (1 = 1);"""
40+
41+
act = isql_act('db', test_script, substitutions=[('-At line.*','')])
42+
43+
expected_stderr = """
44+
Statement failed, SQLSTATE = 42S22
45+
Dynamic SQL Error
46+
-SQL error code = -206
47+
-Column unknown
48+
-T10.ID
49+
-At line 5, column 53
50+
"""
51+
52+
@pytest.mark.version('>=3')
53+
def test_1(act: Action):
54+
act.expected_stderr = expected_stderr
55+
act.execute()
56+
assert act.clean_stderr == act.clean_expected_stderr
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
#coding:utf-8
2+
3+
"""
4+
ID: derived-table-24
5+
TITLE: Derived table with outer reference from LEFT JOIN.
6+
DESCRIPTION: Outer reference inside derived table to other relations in from clause is not allowed.
7+
FBTEST: functional.arno.derived_tables.26
8+
"""
9+
10+
import pytest
11+
from firebird.qa import *
12+
13+
init_script = """CREATE TABLE Table_10 (
14+
ID INTEGER NOT NULL,
15+
DESCRIPTION VARCHAR(10)
16+
);
17+
18+
COMMIT;
19+
20+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (0, NULL);
21+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (1, 'one');
22+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (2, 'two');
23+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (3, 'three');
24+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (4, 'four');
25+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (5, 'five');
26+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (6, 'six');
27+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (7, 'seven');
28+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (8, 'eight');
29+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (9, 'nine');
30+
31+
COMMIT;"""
32+
33+
db = db_factory(init=init_script)
34+
35+
test_script = """SELECT
36+
dt.*
37+
FROM
38+
Table_10 t10
39+
LEFT JOIN (SELECT * FROM Table_10 t2 WHERE t2.ID = t10.ID) dt ON (1 = 1);"""
40+
41+
act = isql_act('db', test_script, substitutions=[('-At line.*','')])
42+
43+
expected_stderr = """
44+
Statement failed, SQLSTATE = 42S22
45+
Dynamic SQL Error
46+
-SQL error code = -206
47+
-Column unknown
48+
-T10.ID
49+
-At line 5, column 58
50+
"""
51+
52+
@pytest.mark.version('>=3')
53+
def test_1(act: Action):
54+
act.expected_stderr = expected_stderr
55+
act.execute()
56+
assert act.clean_stderr == act.clean_expected_stderr
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
#coding:utf-8
2+
3+
"""
4+
ID: derived-table-25
5+
TITLE: Derived table with outer reference from FULL JOIN.
6+
DESCRIPTION: Outer reference inside derived table to other relations in from clause is not allowed.
7+
FBTEST: functional.arno.derived_tables.27
8+
"""
9+
10+
import pytest
11+
from firebird.qa import *
12+
13+
init_script = """CREATE TABLE Table_10 (
14+
ID INTEGER NOT NULL,
15+
DESCRIPTION VARCHAR(10)
16+
);
17+
18+
COMMIT;
19+
20+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (0, NULL);
21+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (1, 'one');
22+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (2, 'two');
23+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (3, 'three');
24+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (4, 'four');
25+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (5, 'five');
26+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (6, 'six');
27+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (7, 'seven');
28+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (8, 'eight');
29+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (9, 'nine');
30+
31+
COMMIT;"""
32+
33+
db = db_factory(init=init_script)
34+
35+
test_script = """SELECT
36+
dt.*
37+
FROM
38+
Table_10 t10
39+
FULL JOIN (SELECT * FROM Table_10 t2 WHERE t2.ID = t10.ID) dt ON (1 = 1);"""
40+
41+
act = isql_act('db', test_script, substitutions=[('-At line.*','')])
42+
43+
expected_stderr = """
44+
Statement failed, SQLSTATE = 42S22
45+
Dynamic SQL Error
46+
-SQL error code = -206
47+
-Column unknown
48+
-T10.ID
49+
-At line 5, column 58
50+
"""
51+
52+
@pytest.mark.version('>=3')
53+
def test_1(act: Action):
54+
act.expected_stderr = expected_stderr
55+
act.execute()
56+
assert act.clean_stderr == act.clean_expected_stderr
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
#coding:utf-8
2+
3+
"""
4+
ID: derived-table-26
5+
TITLE: Derived table with non-unique column names.
6+
DESCRIPTION: Expect an error if a derived table column names is not unique.
7+
FBTEST: functional.arno.derived_tables.29
8+
"""
9+
10+
import pytest
11+
from firebird.qa import *
12+
13+
init_script = """CREATE TABLE Table_10 (
14+
ID INTEGER NOT NULL,
15+
DESCRIPTION VARCHAR(10)
16+
);
17+
18+
COMMIT;
19+
20+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (0, NULL);
21+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (1, 'one');
22+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (2, 'two');
23+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (3, 'three');
24+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (4, 'four');
25+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (5, 'five');
26+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (6, 'six');
27+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (7, 'seven');
28+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (8, 'eight');
29+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (9, 'nine');
30+
31+
COMMIT;"""
32+
33+
db = db_factory(init=init_script)
34+
35+
test_script = """SELECT
36+
dt.*
37+
FROM
38+
(SELECT ID, ID FROM Table_10 t10) dt;"""
39+
40+
act = isql_act('db', test_script)
41+
42+
expected_stderr = """
43+
Statement failed, SQLSTATE = 42000
44+
Dynamic SQL Error
45+
-SQL error code = -104
46+
-Invalid command
47+
-column ID was specified multiple times for derived table DT
48+
"""
49+
50+
@pytest.mark.version('>=3')
51+
def test_1(act: Action):
52+
act.expected_stderr = expected_stderr
53+
act.execute()
54+
assert act.clean_stderr == act.clean_expected_stderr
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
#coding:utf-8
2+
3+
"""
4+
ID: derived-table-27
5+
TITLE: Derived table with non-unique column aliases.
6+
DESCRIPTION: Expect an error if a derived table column aliases is not unique.
7+
FBTEST: functional.arno.derived_tables.30
8+
"""
9+
10+
import pytest
11+
from firebird.qa import *
12+
13+
init_script = """CREATE TABLE Table_10 (
14+
ID INTEGER NOT NULL,
15+
DESCRIPTION VARCHAR(10)
16+
);
17+
18+
COMMIT;
19+
20+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (0, NULL);
21+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (1, 'one');
22+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (2, 'two');
23+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (3, 'three');
24+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (4, 'four');
25+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (5, 'five');
26+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (6, 'six');
27+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (7, 'seven');
28+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (8, 'eight');
29+
INSERT INTO Table_10 (ID, DESCRIPTION) VALUES (9, 'nine');
30+
31+
COMMIT;"""
32+
33+
db = db_factory(init=init_script)
34+
35+
test_script = """SELECT
36+
dt.*
37+
FROM
38+
(SELECT * FROM Table_10 t10) dt (ID, ID);"""
39+
40+
act = isql_act('db', test_script)
41+
42+
expected_stderr = """
43+
Statement failed, SQLSTATE = 42000
44+
Dynamic SQL Error
45+
-SQL error code = -104
46+
-Invalid command
47+
-column ID was specified multiple times for derived table DT
48+
"""
49+
50+
@pytest.mark.version('>=3')
51+
def test_1(act: Action):
52+
act.expected_stderr = expected_stderr
53+
act.execute()
54+
assert act.clean_stderr == act.clean_expected_stderr

0 commit comments

Comments
 (0)