mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-08 14:02:16 +03:00
If a generated column uses the optional keywords GENERATE ALWAYS, try to avoid
putting those keywords in the typename of the column. [forum:/forumpost/ff3ffe09251c105b|Forum post ff3ffe09251c105b] FossilOrigin-Name: 3c954863f45271a3518acf51fd685a641878811fb5cfcbdbad85154aeccdc902
This commit is contained in:
14
manifest
14
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Avoid\sclownfeet\sin\sthe\snames\scolumns\swhen\sthe\scolumn\snames\sare\squoted\nin\sthe\soriginal\sCREATE\sTABLE\sstatement.
|
C If\sa\sgenerated\scolumn\suses\sthe\soptional\skeywords\sGENERATE\sALWAYS,\stry\sto\savoid\nputting\sthose\skeywords\sin\sthe\stypename\sof\sthe\scolumn.\n[forum:/forumpost/ff3ffe09251c105b|Forum\spost\sff3ffe09251c105b]
|
||||||
D 2021-07-30T18:39:59.675
|
D 2021-07-30T20:09:08.819
|
||||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||||
@@ -488,7 +488,7 @@ F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6
|
|||||||
F src/btree.c e204a9c8fb4fe5dbb910a863ba487f4af9b5c501254ec4ccbfcdd6b1f65b7fb4
|
F src/btree.c e204a9c8fb4fe5dbb910a863ba487f4af9b5c501254ec4ccbfcdd6b1f65b7fb4
|
||||||
F src/btree.h 74d64b8f28cfa4a894d14d4ed64fa432cd697b98b61708d4351482ae15913e22
|
F src/btree.h 74d64b8f28cfa4a894d14d4ed64fa432cd697b98b61708d4351482ae15913e22
|
||||||
F src/btreeInt.h 7bc15a24a02662409ebcd6aeaa1065522d14b7fda71573a2b0568b458f514ae0
|
F src/btreeInt.h 7bc15a24a02662409ebcd6aeaa1065522d14b7fda71573a2b0568b458f514ae0
|
||||||
F src/build.c 8b0a6aa7dbce272c66f282f7aeec6e37ee1c7ded21e8f5a6e3864b0ab6ccdb29
|
F src/build.c fedaf923ea61eed3496f5ef6fca6e3162344faf109e8d0228f61c7a24b92fe6a
|
||||||
F src/callback.c d0b853dd413255d2e337b34545e54d888ea02f20da5ad0e63585b389624c4a6c
|
F src/callback.c d0b853dd413255d2e337b34545e54d888ea02f20da5ad0e63585b389624c4a6c
|
||||||
F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
|
F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
|
||||||
F src/ctime.c 8159d5f706551861c18ec6c8f6bdf105e15ea00367f05d9ab65d31a1077facc1
|
F src/ctime.c 8159d5f706551861c18ec6c8f6bdf105e15ea00367f05d9ab65d31a1077facc1
|
||||||
@@ -1062,7 +1062,7 @@ F test/fuzzer1.test 3d4c4b7e547aba5e5511a2991e3e3d07166cfbb8
|
|||||||
F test/fuzzer2.test a85ef814ce071293bce1ad8dffa217cbbaad4c14
|
F test/fuzzer2.test a85ef814ce071293bce1ad8dffa217cbbaad4c14
|
||||||
F test/fuzzerfault.test f64c4aef4c9e9edf1d6dc0d3f1e65dcc81e67c996403c88d14f09b74807a42bc
|
F test/fuzzerfault.test f64c4aef4c9e9edf1d6dc0d3f1e65dcc81e67c996403c88d14f09b74807a42bc
|
||||||
F test/gcfault.test dd28c228a38976d6336a3fc42d7e5f1ad060cb8c
|
F test/gcfault.test dd28c228a38976d6336a3fc42d7e5f1ad060cb8c
|
||||||
F test/gencol1.test b05e6c5edb9b10d48efb634ed07342441bddc89d225043e17095c36e567521a0
|
F test/gencol1.test 26c55577b15f78069bacf8afee994b74b9d69aa690577db9cff926b10e4e6be2
|
||||||
F test/genesis.tcl 1e2e2e8e5cc4058549a154ff1892fe5c9de19f98
|
F test/genesis.tcl 1e2e2e8e5cc4058549a154ff1892fe5c9de19f98
|
||||||
F test/having.test a89236dd8d55aa50c4805f82ac9daf64d477a44d712d8209c118978d0ca21ec9
|
F test/having.test a89236dd8d55aa50c4805f82ac9daf64d477a44d712d8209c118978d0ca21ec9
|
||||||
F test/hexlit.test 4a6a5f46e3c65c4bf1fa06f5dd5a9507a5627751
|
F test/hexlit.test 4a6a5f46e3c65c4bf1fa06f5dd5a9507a5627751
|
||||||
@@ -1920,7 +1920,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
|||||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||||
P 2941ded0acbdcf914567bf7451cfd9b770269545c20d3fa7107c40492689afad
|
P 980f7292afd45a8e73272e2139b55b99ab86167febec9fd0bf0356e8167b2ee9
|
||||||
R 34387fa0540aea58caf42bd33cbb64b5
|
R 5e0d17f3eda249159c66a4dab795bade
|
||||||
U drh
|
U drh
|
||||||
Z a43263f36582e13af1a30f741180b3be
|
Z b92983df8210770e5aba5b5d6965da26
|
||||||
|
@@ -1 +1 @@
|
|||||||
980f7292afd45a8e73272e2139b55b99ab86167febec9fd0bf0356e8167b2ee9
|
3c954863f45271a3518acf51fd685a641878811fb5cfcbdbad85154aeccdc902
|
18
src/build.c
18
src/build.c
@@ -1389,6 +1389,24 @@ void sqlite3AddColumn(Parse *pParse, Token sName, Token sType){
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if( !IN_RENAME_OBJECT ) sqlite3DequoteToken(&sName);
|
if( !IN_RENAME_OBJECT ) sqlite3DequoteToken(&sName);
|
||||||
|
|
||||||
|
/* Because keywords GENERATE ALWAYS can be converted into indentifiers
|
||||||
|
** by the parser, we can sometimes end up with a typename that ends
|
||||||
|
** with "generated always". Check for this case and omit the surplus
|
||||||
|
** text. */
|
||||||
|
if( sType.n>=16
|
||||||
|
&& sqlite3_strnicmp(sType.z+(sType.n-6),"always",6)==0
|
||||||
|
){
|
||||||
|
sType.n -= 6;
|
||||||
|
while( ALWAYS(sType.n>0) && sqlite3Isspace(sType.z[sType.n-1]) ) sType.n--;
|
||||||
|
if( sType.n>=9
|
||||||
|
&& sqlite3_strnicmp(sType.z+(sType.n-9),"generated",9)==0
|
||||||
|
){
|
||||||
|
sType.n -= 9;
|
||||||
|
while( sType.n>0 && sqlite3Isspace(sType.z[sType.n-1]) ) sType.n--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
z = sqlite3DbMallocRaw(db, sName.n + sType.n + 2);
|
z = sqlite3DbMallocRaw(db, sName.n + sType.n + 2);
|
||||||
if( z==0 ) return;
|
if( z==0 ) return;
|
||||||
if( IN_RENAME_OBJECT ) sqlite3RenameTokenMap(pParse, (void*)z, &sName);
|
if( IN_RENAME_OBJECT ) sqlite3RenameTokenMap(pParse, (void*)z, &sName);
|
||||||
|
@@ -585,5 +585,21 @@ do_execsql_test gencol1-20.2 {
|
|||||||
SELECT * FROM tab;
|
SELECT * FROM tab;
|
||||||
} {2001-01-01 0 0 5 {}}
|
} {2001-01-01 0 0 5 {}}
|
||||||
|
|
||||||
|
# 2021-07-30 forum https://sqlite.org/forum/forumpost/ff3ffe09251c105b?t=h
|
||||||
|
#
|
||||||
|
reset_db
|
||||||
|
do_execsql_test gencol1-21.1 {
|
||||||
|
CREATE TABLE t1(
|
||||||
|
a integer primary key,
|
||||||
|
b int generated always as (a+5),
|
||||||
|
c text GENERATED ALWAYS as (printf('%08x',a)),
|
||||||
|
d Generated
|
||||||
|
Always
|
||||||
|
AS ('xyzzy'),
|
||||||
|
e int Always default(5)
|
||||||
|
);
|
||||||
|
INSERT INTO t1(a) VALUES(5);
|
||||||
|
SELECT name, type FROM pragma_table_xinfo('t1');
|
||||||
|
} {a integer b int c text d {} e {int}}
|
||||||
|
|
||||||
finish_test
|
finish_test
|
||||||
|
Reference in New Issue
Block a user