From: drh <> Date: Fri, 14 Apr 2023 10:46:26 +0000 (+0000) Subject: When setting the column types on a subquery, ensure that the COLFLAG_HASCOLL X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e71a0cf95fb733ca21ae56b26694bfda2682670a;p=thirdparty%2Fsqlite.git When setting the column types on a subquery, ensure that the COLFLAG_HASCOLL flag is cleared from column names from when the collating sequence name has been removed. FossilOrigin-Name: de61bdc9b96d958c9651f5e8935ebbb0132fcae72de43fbf33d6c5c8e97906e3 --- diff --git a/manifest b/manifest index 7956e93ebe..900db94213 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Avoid\sdouble\sde-quoting\sof\stable\snames\swhen\sprocessing\sRESTRICT\sactions\nin\sforeign\skey\sconstraints. -D 2023-04-14T00:23:13.764 +C When\ssetting\sthe\scolumn\stypes\son\sa\ssubquery,\sensure\sthat\sthe\sCOLFLAG_HASCOLL\nflag\sis\scleared\sfrom\scolumn\snames\sfrom\swhen\sthe\scollating\ssequence\sname\shas\nbeen\sremoved. +D 2023-04-14T10:46:26.552 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -621,7 +621,7 @@ F src/printf.c ff4b05e38bf928ff1b80d3dda4f977b10fe39ecbfe69c018224c7e5594fb2455 F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c F src/resolve.c 6a0253379cc15b3f80321362a61f487a8ef7cd2487fe62e1eb2317b3f871c61f F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92 -F src/select.c fa96f217be53f18e1668b83a8ca9bb45835fc6e1774827b791982d7235b1a8b2 +F src/select.c 01ef181eb63d1cd50f47eca9e6aa89ae4a790c773391ded8f8f9b39d8b985288 F src/shell.c.in 4090679073d615514dfb2f50072818eb48dc9c540ec533b31fbeb922b15938f9 F src/sqlite.h.in 662a2fa083d093896b92560c871dea6d86792b49dc4bf7b4e8dbeca8e7171488 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 @@ -2046,9 +2046,9 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P cf651dee1279455dee5005701a2e8b76c9d2545b192919b84370d2e31a4a3baa -Q +bb2b5ab172f0751c00343facf36fb12db10c88220caece31849f2711f12293d9 -R 319100232c0f2d99e3c3ca2880dae46d +P 5af7abffe7865375d9f5d1bede4d98bc5b26bd8c958398bda89a31f6a3f68524 +Q +8d9dcd7cfdd53034e21cdb2cb997b6f5fe3207ca5d0d7a0b841b8a68e6ce8624 +R b3e4b6b7858f83aff136ecb171d1add3 U drh -Z 6e3f8d30a09e92eeecadeb8cb76ca110 +Z 3b2261162197edc72f05f8fc84f68eed # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 8365820576..7dbfda02cf 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -5af7abffe7865375d9f5d1bede4d98bc5b26bd8c958398bda89a31f6a3f68524 \ No newline at end of file +de61bdc9b96d958c9651f5e8935ebbb0132fcae72de43fbf33d6c5c8e97906e3 \ No newline at end of file diff --git a/src/select.c b/src/select.c index 33bc4c3287..780b9c0094 100644 --- a/src/select.c +++ b/src/select.c @@ -2363,18 +2363,18 @@ void sqlite3SubqueryColumnTypes( break; } } - } - } - if( zType ){ - i64 m = sqlite3Strlen30(zType); - n = sqlite3Strlen30(pCol->zCnName); - pCol->zCnName = sqlite3DbReallocOrFree(db, pCol->zCnName, n+m+2); - if( pCol->zCnName ){ - memcpy(&pCol->zCnName[n+1], zType, m+1); - pCol->colFlags |= COLFLAG_HASTYPE; - }else{ - testcase( pCol->colFlags & COLFLAG_HASTYPE ); - pCol->colFlags &= ~(COLFLAG_HASTYPE|COLFLAG_HASCOLL); + } + } + if( zType ){ + i64 m = sqlite3Strlen30(zType); + n = sqlite3Strlen30(pCol->zCnName); + pCol->zCnName = sqlite3DbReallocOrFree(db, pCol->zCnName, n+m+2); + pCol->colFlags &= ~(COLFLAG_HASTYPE|COLFLAG_HASCOLL); + if( pCol->zCnName ){ + memcpy(&pCol->zCnName[n+1], zType, m+1); + pCol->colFlags |= COLFLAG_HASTYPE; + }else{ + testcase( pCol->colFlags & COLFLAG_HASTYPE ); } } pColl = sqlite3ExprCollSeq(pParse, p);