From: drh <> Date: Sat, 22 Jan 2022 20:45:57 +0000 (+0000) Subject: Bring sqlite3_vtab_distinct() up to spec so that it works as described in the X-Git-Tag: version-3.38.0~96^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fheads%2Fsqlite3_vtab_distinct;p=thirdparty%2Fsqlite.git Bring sqlite3_vtab_distinct() up to spec so that it works as described in the documentation. FossilOrigin-Name: 4289edf3c5e32a05b51f232020099b33f6f5e79b0ceca2b96baf1186168d9af6 --- diff --git a/manifest b/manifest index 00218ad384..882cfbc89f 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Iimproved\sdocumentation\sfor\ssqlite3_vtab_distinct().\s\sNo\schanges\sto\scode. -D 2022-01-22T19:19:35.721 +C Bring\ssqlite3_vtab_distinct()\sup\sto\sspec\sso\sthat\sit\sworks\sas\sdescribed\sin\sthe\ndocumentation. +D 2022-01-22T20:45:57.210 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -639,7 +639,7 @@ F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9 F src/wal.c b9df133a705093da8977da5eb202eaadb844839f1c7297c08d33471f5491843d F src/wal.h c3aa7825bfa2fe0d85bef2db94655f99870a285778baa36307c0a16da32b226a F src/walker.c f890a3298418d7cba3b69b8803594fdc484ea241206a8dfa99db6dd36f8cbb3b -F src/where.c bf15b922a134948a56a078e0a01d1e63f9f8ff59f6503cba241855f8cb961b4f +F src/where.c 9824d15f2a92cbe4d6566e2a97fa4466ce6297e68693322e64281db5e942fa92 F src/whereInt.h 8a215acde0f833a4dea3d30a7bbed9f48b4b547b5d5e34cd02acee366476ab80 F src/wherecode.c a0a5138b28550dd95916435283c507aa6bf24607ef38a0a18011e6626684330a F src/whereexpr.c 9f64c39e53070584e99e4d20c1dd3397e125fabbae8fd414ffec574c410ac7d3 @@ -1724,7 +1724,7 @@ F test/vtabK.test 13293177528fada1235c0112db0d187d754af1355c5a39371abd365104e3af F test/vtab_alter.test 736e66fb5ec7b4fee58229aa3ada2f27ec58bc58c00edae4836890c3784c6783 F test/vtab_err.test dcc8b7b9cb67522b3fe7a272c73856829dae4ab7fdb30399aea1b6981bda2b65 F test/vtab_shared.test 5253bff2355a9a3f014c15337da7e177ab0ef8ad -F test/vtabdistinct.test e35a8c91cd9e2a1130eb708376e33aa38511b880fb7c1691387d3e9ec57d9157 +F test/vtabdistinct.test 7688f0889358f849fd60bbfde1ded38b014b18066076d4bfbb75395804dfe072 F test/vtabdrop.test 65d4cf6722972e5499bdaf0c0d70ee3b8133944a4e4bc31862563f32a7edca12 F test/vtabrhs1.test c138346be341916ecc9d918dcfc2657d27bce211a350a82b01d62d224b167b56 F test/wal.test b7cc6984709f54afbf8441747ced1f646af120bf0c1b1d847bfa39306fbea089 @@ -1941,8 +1941,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P a13afc909c8bb643aa154b39ba8c023bae7352d3cd7cfb96be3891fa0e4bc045 -R ee7e69afa00103e3a528aaa0afa4a945 +P 7af03f02940b5380ee7375672ca8d0ff68c5f741d0ea206911631f3eb5a78555 +R 8c92b45cd50ac9ababc3056da5861966 U drh -Z f9808520490668283a6ca50de433adb3 +Z 0f40ebbc8d49180e2de4a825f9a960d1 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index fb902954b0..e96d220661 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -7af03f02940b5380ee7375672ca8d0ff68c5f741d0ea206911631f3eb5a78555 \ No newline at end of file +4289edf3c5e32a05b51f232020099b33f6f5e79b0ceca2b96baf1186168d9af6 \ No newline at end of file diff --git a/src/where.c b/src/where.c index c8e7d906b9..57c4808906 100644 --- a/src/where.c +++ b/src/where.c @@ -1206,8 +1206,8 @@ static sqlite3_index_info *allocateIndexInfo( } if( i==n){ nOrderBy = n; - if( (pWInfo->wctrlFlags & WHERE_DISTINCTBY) ){ - eDistinct = 1; + if( (pWInfo->wctrlFlags & (WHERE_GROUPBY|WHERE_DISTINCTBY)) ){ + eDistinct = 1 + ((pWInfo->wctrlFlags & WHERE_DISTINCTBY)!=0); } } } diff --git a/test/vtabdistinct.test b/test/vtabdistinct.test index 63fa1569d3..e18e121e50 100644 --- a/test/vtabdistinct.test +++ b/test/vtabdistinct.test @@ -27,10 +27,15 @@ do_execsql_test 1.1 { } {0} do_execsql_test 1.2 { SELECT DISTINCT ix FROM qpvtab WHERE vn='sqlite3_vtab_distinct'; -} {1} +} {2} do_execsql_test 1.3 { SELECT distinct vn, ix FROM qpvtab(3) WHERE +vn IN ('sqlite3_vtab_distinct','nOrderBy'); -} {nOrderBy 2 sqlite3_vtab_distinct 1} +} {nOrderBy 2 sqlite3_vtab_distinct 2} +do_execsql_test 1.4 { + SELECT vn, ix FROM qpvtab + GROUP BY vn + HAVING vn='sqlite3_vtab_distinct'; +} {sqlite3_vtab_distinct 1} finish_test