mirror of https://github.com/sqlite/sqlite
New test cases for column name generation interacting with the query flattener.
FossilOrigin-Name: 0c38dde4543d6183a6ab0b7b3b75819f56c47704756a2426d54d3f20468d78d8
This commit is contained in:
parent
f35f2f92ed
commit
ce00d05a7b
15
manifest
15
manifest
|
@ -1,5 +1,5 @@
|
|||
C Move\sthe\sgeneration\sof\soutput\scolumn\snames\searlier,\sto\sright\safter\sname\nresolution\sand\sbefore\squery\stransformations\ssuch\sas\sflattening.\s\sThis\sprevents\nthe\snames\sfrom\sgetting\smangled\sby\squery\stransformations,\sand\sobviates\shacks\nin\sthe\squery\sflattener\sthat\sattempt\sto\swork\saround\sthe\sname\smangling.\nThe\sresulting\scode\sis\ssmaller\sand\sfaster\sand\sgives\smore\sconsistent\soutput.\nThis\sis\san\salternative\sfix\sto\sticket\s[de3403bf5ae5f72ed].
|
||||
D 2017-07-29T16:01:55.238
|
||||
C New\stest\scases\sfor\scolumn\sname\sgeneration\sinteracting\swith\sthe\squery\sflattener.
|
||||
D 2017-07-29T17:02:22.699
|
||||
F Makefile.in d9873c9925917cca9990ee24be17eb9613a668012c85a343aef7e5536ae266e8
|
||||
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
|
||||
F Makefile.msc 02b469e9dcd5b7ee63fc1fb05babc174260ee4cfa4e0ef2e48c3c6801567a016
|
||||
|
@ -652,7 +652,7 @@ F test/collate9.test 3adcc799229545940df2f25308dd1ad65869145a
|
|||
F test/collateA.test b8218ab90d1fa5c59dcf156efabb1b2599c580d6
|
||||
F test/collateB.test 1e68906951b846570f29f20102ed91d29e634854ee47454d725f2151ecac0b95
|
||||
F test/colmeta.test 2c765ea61ee37bc43bbe6d6047f89004e6508eb1
|
||||
F test/colname.test 08948a4809d22817e0e5de89c7c0a8bd90cb551b
|
||||
F test/colname.test b111edd2a84f558567320904bb94c779d7eec47254265b5f0a3d1f3e52cc28e0
|
||||
F test/conflict.test 029faa2d81a0d1cafb5f88614beb663d972c01db
|
||||
F test/conflict2.test bb0b94cf7196c64a3cbd815c66d3ee98c2fecd9c
|
||||
F test/conflict3.test a83db76a6c3503b2fa057c7bfb08c318d8a422202d8bc5b86226e078e5b49ff9
|
||||
|
@ -1637,10 +1637,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
|||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||
P bcec155e0d6c6b17ae09d5a366c080723d01ff40dbc1a0ad0bb669a91db1b850
|
||||
R 1dd5a0c8909a7008cc7feb807ee35ff5
|
||||
T *branch * early-column-names
|
||||
T *sym-early-column-names *
|
||||
T -sym-trunk *
|
||||
P 09834279aeca3bda63de684a369ed64f2cbf587b5f5df1454c0a3c009a1337ad
|
||||
R 67883e010f09f35ff4da8532a7b615d9
|
||||
U drh
|
||||
Z 012e37d9c831aa36f84ce05878b8d813
|
||||
Z d8a6008eca97bd8ffc0a711cdb6dfcd3
|
||||
|
|
|
@ -1 +1 @@
|
|||
09834279aeca3bda63de684a369ed64f2cbf587b5f5df1454c0a3c009a1337ad
|
||||
0c38dde4543d6183a6ab0b7b3b75819f56c47704756a2426d54d3f20468d78d8
|
|
@ -13,7 +13,6 @@
|
|||
# The focus of this file is testing how SQLite generates the names
|
||||
# of columns in a result set.
|
||||
#
|
||||
# $Id: colname.test,v 1.7 2009/06/02 15:47:38 drh Exp $
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
source $testdir/tester.tcl
|
||||
|
@ -326,4 +325,58 @@ do_test colname-8.1 {
|
|||
}
|
||||
} {123}
|
||||
|
||||
# 2017-07-29: Interaction between column naming and query flattening.
|
||||
# For years now, the query flattener has inserted AS clauses on the
|
||||
# outer query that were the original SQL text of the column. This caused
|
||||
# column-name shifts when the query flattener was enhanced, breaking
|
||||
# legacy applications. See https://sqlite.org/src/info/41c27bc0ff1d3135
|
||||
# for details.
|
||||
#
|
||||
# To fix this, the column naming logic was moved ahead of the query
|
||||
# flattener so that column names are assigned before the query flattener
|
||||
# runs.
|
||||
#
|
||||
db close
|
||||
sqlite3 db :memory:
|
||||
do_test colname-9.100 {
|
||||
db eval {
|
||||
CREATE TABLE t1(a,b);
|
||||
INSERT INTO t1 VALUES(1,2);
|
||||
CREATE VIEW v1(x,y) AS SELECT a,b FROM t1;
|
||||
}
|
||||
execsql2 {SELECT v1.x, (Y) FROM v1}
|
||||
# Prior to the fix, this would return: "v1.x 1 (Y) 2"
|
||||
} {x 1 y 2}
|
||||
do_test colname-9.110 {
|
||||
execsql2 {SELECT * FROM v1}
|
||||
} {x 1 y 2}
|
||||
do_test colname-9.120 {
|
||||
db eval {
|
||||
CREATE VIEW v2(x,y) AS SELECT a,b FROM t1 LIMIT 10;
|
||||
}
|
||||
execsql2 {SELECT * FROM v2 WHERE 1}
|
||||
} {x 1 y 2}
|
||||
do_test colname-9.130 {
|
||||
execsql2 {SELECT v2.x, [v2].[y] FROM v2 WHERE 1}
|
||||
} {x 1 y 2}
|
||||
do_test colname-9.140 {
|
||||
execsql2 {SELECT +x, +y FROM v2 WHERE 1}
|
||||
} {+x 1 +y 2}
|
||||
|
||||
do_test colname-9.200 {
|
||||
db eval {
|
||||
CREATE TABLE t2(c,d);
|
||||
INSERT INTO t2 VALUES(3,4);
|
||||
CREATE VIEW v3 AS SELECT c AS a, d AS b FROM t2;
|
||||
}
|
||||
execsql2 {SELECT t1.a, v3.a AS n FROM t1 LEFT JOIN v3}
|
||||
} {a 1 n 3}
|
||||
do_test colname-9.211 {
|
||||
execsql2 {SELECT t1.a AS n, v3.a FROM t1 JOIN v3}
|
||||
} {n 1 a 3}
|
||||
do_test colname-9.210 {
|
||||
execsql2 {SELECT t1.a, v3.a AS n FROM t1 JOIN v3}
|
||||
} {a 1 n 3}
|
||||
|
||||
|
||||
finish_test
|
||||
|
|
Loading…
Reference in New Issue