mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-30 19:03:16 +03:00
When the affinity of a table column is INT or REAL, make the affinity of
corresponding index columns NUMERIC. This increases the precision of index lookups for large numbers so that it matches the precision of ordinary comparison operators. Ticket [40812aea1fde9594] FossilOrigin-Name: e0d909c740b774d8a46731696e33342be83206cc4a95d07f42fdb3d8cc2d7a8e
This commit is contained in:
16
manifest
16
manifest
@ -1,5 +1,5 @@
|
||||
C Make\ssure\sOP_RealAffinity\shas\sbeen\sapplied\sto\sall\scolumns\sof\stype\sREAL\nin\sthe\sexcluded.*\spseudo-table\sof\san\sUPSERT.\nTicket\s[5a3dba8104421320]
|
||||
D 2019-08-30T23:15:00.679
|
||||
C When\sthe\saffinity\sof\sa\stable\scolumn\sis\sINT\sor\sREAL,\smake\sthe\saffinity\sof\ncorresponding\sindex\scolumns\sNUMERIC.\s\sThis\sincreases\sthe\sprecision\sof\nindex\slookups\sfor\slarge\snumbers\sso\sthat\sit\smatches\sthe\sprecision\sof\nordinary\scomparison\soperators.\s\sTicket\s[40812aea1fde9594]
|
||||
D 2019-08-30T23:56:34.003
|
||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||
@ -484,7 +484,7 @@ F src/hash.c 8d7dda241d0ebdafb6ffdeda3149a412d7df75102cecfc1021c98d6219823b19
|
||||
F src/hash.h 9d56a9079d523b648774c1784b74b89bd93fac7b365210157482e4319a468f38
|
||||
F src/hwtime.h 747c1bbe9df21a92e9c50f3bbec1de841dc5e5da
|
||||
F src/in-operator.md 10cd8f4bcd225a32518407c2fb2484089112fd71
|
||||
F src/insert.c 81eec6acf4fbf0942bbab6804fe50df3e109acba40b8bbfb00fec9a14d0715a6
|
||||
F src/insert.c 40557ebd69f4115e7a273f9304a8ab637a47ce44f3c6923396928f023967b5e8
|
||||
F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa
|
||||
F src/loadext.c a045bb3425a9a633cc0f78e93d9beda6866f4c0f15bfdee735aba7c6b39f5cc4
|
||||
F src/main.c 51c55eb579eac4180bfcc6242741084710911350d2cd0c3fdd0f9fde55442128
|
||||
@ -611,11 +611,11 @@ F src/wal.h 606292549f5a7be50b6227bd685fa76e3a4affad71bb8ac5ce4cb5c79f6a176a
|
||||
F src/walker.c d5a94907dcac990e31976be9dc769d17f6a806782593d6aec9d760ee01ec22cd
|
||||
F src/where.c fb546afbdbedc77a6193a236db92f6f85bc8e17412ec596230dd8aee03a93716
|
||||
F src/whereInt.h 4a296fd4fa79fdcbc2b5e8c1b898901617655811223e1082b899c23ecb092217
|
||||
F src/wherecode.c 535c8e228478fd971b9a5b6cb6773995b0fbf7020d5989508a5094ce5b8cd95b
|
||||
F src/wherecode.c b27b95cbd901c50ff4b26835eb249f57845193615861742bd1056e6d2e40b40c
|
||||
F src/whereexpr.c 2757afbd5cfdbb420f9d0392e1bd5f5c0e33dee50a8c692befc7e502308e449f
|
||||
F src/window.c 96b0c033d33408f16ac8b177eac6362ee53a23d9b6d7a51a04289ab2f956bb77
|
||||
F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
|
||||
F test/affinity2.test b03930d288e38b07f55023a58538ad174605695e98934bdab1facf6bd9ecc436
|
||||
F test/affinity2.test da465d3d490ab24ef64f7715b5953343a4967762b9350b29eb1462879ff3fb9e
|
||||
F test/affinity3.test 6a101af2fc945ce2912f6fe54dd646018551710d
|
||||
F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
|
||||
F test/aggnested.test 18b00de006597e960a6b27ccec51474ac66cf1070a87c1933e5694dc02190ef1
|
||||
@ -1838,7 +1838,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 54553bf16fabd72d1967acef317beb518e086707ccd45890b7c7256b8da08b75
|
||||
R cef0df55cd7685f2b9e620402ed17caf
|
||||
P 67381dadede98a55d8d9e085d021e6fa6473071978967b6302e03b28cf2245e1
|
||||
R 81c5159f885099a08c3a032048c494b3
|
||||
U drh
|
||||
Z 1f2b76474aa0bfdfd3021ea753e61c50
|
||||
Z df65619bddc85917641870cd10c4e180
|
||||
|
@ -1 +1 @@
|
||||
67381dadede98a55d8d9e085d021e6fa6473071978967b6302e03b28cf2245e1
|
||||
e0d909c740b774d8a46731696e33342be83206cc4a95d07f42fdb3d8cc2d7a8e
|
@ -99,6 +99,7 @@ const char *sqlite3IndexAffinityStr(sqlite3 *db, Index *pIdx){
|
||||
aff = sqlite3ExprAffinity(pIdx->aColExpr->a[n].pExpr);
|
||||
}
|
||||
if( aff<SQLITE_AFF_BLOB ) aff = SQLITE_AFF_BLOB;
|
||||
if( aff>SQLITE_AFF_NUMERIC) aff = SQLITE_AFF_NUMERIC;
|
||||
pIdx->zColAff[n] = aff;
|
||||
}
|
||||
pIdx->zColAff[n] = 0;
|
||||
|
@ -755,6 +755,7 @@ static int codeAllEqualityTerms(
|
||||
if( sqlite3ExprNeedsNoAffinityChange(pRight, zAff[j]) ){
|
||||
zAff[j] = SQLITE_AFF_BLOB;
|
||||
}
|
||||
if( zAff[j]==SQLITE_AFF_REAL ) zAff[j] = SQLITE_AFF_NUMERIC;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -116,5 +116,16 @@ do_execsql_test 507 {
|
||||
SELECT * FROM t0 WHERE +-+'ce' >= t0.c0;
|
||||
} {-1 {}}
|
||||
|
||||
# 2019-08-30 ticket https://www.sqlite.org/src/info/40812aea1fde9594
|
||||
#
|
||||
do_execsql_test 600 {
|
||||
DROP TABLE IF EXISTS t0;
|
||||
CREATE TABLE t0(c0 REAL UNIQUE);
|
||||
INSERT INTO t0(c0) VALUES (3175546974276630385);
|
||||
SELECT 3175546974276630385 < c0 FROM t0;
|
||||
} {1}
|
||||
do_execsql_test 601 {
|
||||
SELECT 1 FROM t0 WHERE 3175546974276630385 < c0;
|
||||
} {1}
|
||||
|
||||
finish_test
|
||||
|
Reference in New Issue
Block a user