mirror of
https://github.com/sqlite/sqlite.git
synced 2025-11-15 11:41:13 +03:00
Set the "type" correctly of built-in BINARY collating sequences for UTF16.
FossilOrigin-Name: 167644f33c949b532655c2297aedf13f93876396
This commit is contained in:
18
manifest
18
manifest
@@ -1,8 +1,8 @@
|
|||||||
-----BEGIN PGP SIGNED MESSAGE-----
|
-----BEGIN PGP SIGNED MESSAGE-----
|
||||||
Hash: SHA1
|
Hash: SHA1
|
||||||
|
|
||||||
C All\sthe\ssqlite3GetCollSeq()\sfunction\sto\sspecify\san\sarbitrary\stext\sencoding.
|
C Set\sthe\s"type"\scorrectly\sof\sbuilt-in\sBINARY\scollating\ssequences\sfor\sUTF16.
|
||||||
D 2009-08-20T02:34:15
|
D 2009-08-20T02:49:31
|
||||||
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
|
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
|
||||||
F Makefile.in 0f7761c5d1c62ae7a841e3393ffaff1fa0f5c00a
|
F Makefile.in 0f7761c5d1c62ae7a841e3393ffaff1fa0f5c00a
|
||||||
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
||||||
@@ -129,7 +129,7 @@ F src/journal.c e00df0c0da8413ab6e1bb7d7cab5665d4a9000d0
|
|||||||
F src/legacy.c 303b4ffcf1ae652fcf5ef635846c563c254564f6
|
F src/legacy.c 303b4ffcf1ae652fcf5ef635846c563c254564f6
|
||||||
F src/lempar.c 0c4d1ab0a5ef2b0381eb81a732c54f68f27a574d
|
F src/lempar.c 0c4d1ab0a5ef2b0381eb81a732c54f68f27a574d
|
||||||
F src/loadext.c 0e88a335665db0b2fb4cece3e49dcb65d832635a
|
F src/loadext.c 0e88a335665db0b2fb4cece3e49dcb65d832635a
|
||||||
F src/main.c 1e87aa66fd43d4a11c9aa4ed1407d0894b359a52
|
F src/main.c c2fc25f25edf7bfb4b70622e21dc6c8476b6d66d
|
||||||
F src/malloc.c b1725183bcc4ce2e569f1b65da844dc3e4c7a643
|
F src/malloc.c b1725183bcc4ce2e569f1b65da844dc3e4c7a643
|
||||||
F src/mem0.c f2f84062d1f35814d6535c9f9e33de3bfb3b132c
|
F src/mem0.c f2f84062d1f35814d6535c9f9e33de3bfb3b132c
|
||||||
F src/mem1.c e6d5c23941288df8191b8a98c28e3f57771e2270
|
F src/mem1.c e6d5c23941288df8191b8a98c28e3f57771e2270
|
||||||
@@ -750,14 +750,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
|
|||||||
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
|
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
|
||||||
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
||||||
F tool/vdbe-compress.tcl 672f81d693a03f80f5ae60bfefacd8a349e76746
|
F tool/vdbe-compress.tcl 672f81d693a03f80f5ae60bfefacd8a349e76746
|
||||||
P 2467eb68ace46f6185fd14758446a5c887caffe3
|
P 4ee44322ca3c92ed8d6f5d4a3f89d219bf379595
|
||||||
R fefce6705301a1ffd6d7c50ffcad3a36
|
R a229bfa6fe4f806b055faae10403d403
|
||||||
U drh
|
U drh
|
||||||
Z 98ec124f66a48a1bb94d3a6b8f22b8e4
|
Z e854e162390a77ab2c2b41dc6df78930
|
||||||
-----BEGIN PGP SIGNATURE-----
|
-----BEGIN PGP SIGNATURE-----
|
||||||
Version: GnuPG v1.4.6 (GNU/Linux)
|
Version: GnuPG v1.4.6 (GNU/Linux)
|
||||||
|
|
||||||
iD8DBQFKjLYqoxKgR168RlERAroAAJ0Svkm1+MWBNNctkTg7ND8Sf9xrSQCghvrq
|
iD8DBQFKjLm+oxKgR168RlERAsLHAJwN2kz7PF+0ZFK6UY6zOKEcdbVNmACfRdSQ
|
||||||
XTAW3zqMFKerQ0WAo8MAen8=
|
gRzico4HrGZ+RZD/AC3jBKY=
|
||||||
=ZqkO
|
=Uer1
|
||||||
-----END PGP SIGNATURE-----
|
-----END PGP SIGNATURE-----
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
4ee44322ca3c92ed8d6f5d4a3f89d219bf379595
|
167644f33c949b532655c2297aedf13f93876396
|
||||||
31
src/main.c
31
src/main.c
@@ -1360,6 +1360,7 @@ static int createCollation(
|
|||||||
sqlite3* db,
|
sqlite3* db,
|
||||||
const char *zName,
|
const char *zName,
|
||||||
int enc,
|
int enc,
|
||||||
|
int collType,
|
||||||
void* pCtx,
|
void* pCtx,
|
||||||
int(*xCompare)(void*,int,const void*,int,const void*),
|
int(*xCompare)(void*,int,const void*,int,const void*),
|
||||||
void(*xDel)(void*)
|
void(*xDel)(void*)
|
||||||
@@ -1424,6 +1425,7 @@ static int createCollation(
|
|||||||
pColl->pUser = pCtx;
|
pColl->pUser = pCtx;
|
||||||
pColl->xDel = xDel;
|
pColl->xDel = xDel;
|
||||||
pColl->enc = (u8)(enc2 | (enc & SQLITE_UTF16_ALIGNED));
|
pColl->enc = (u8)(enc2 | (enc & SQLITE_UTF16_ALIGNED));
|
||||||
|
pColl->type = collType;
|
||||||
}
|
}
|
||||||
sqlite3Error(db, SQLITE_OK, 0);
|
sqlite3Error(db, SQLITE_OK, 0);
|
||||||
return SQLITE_OK;
|
return SQLITE_OK;
|
||||||
@@ -1521,7 +1523,6 @@ static int openDatabase(
|
|||||||
){
|
){
|
||||||
sqlite3 *db;
|
sqlite3 *db;
|
||||||
int rc;
|
int rc;
|
||||||
CollSeq *pColl;
|
|
||||||
int isThreadsafe;
|
int isThreadsafe;
|
||||||
|
|
||||||
*ppDb = 0;
|
*ppDb = 0;
|
||||||
@@ -1607,10 +1608,14 @@ static int openDatabase(
|
|||||||
** and UTF-16, so add a version for each to avoid any unnecessary
|
** and UTF-16, so add a version for each to avoid any unnecessary
|
||||||
** conversions. The only error that can occur here is a malloc() failure.
|
** conversions. The only error that can occur here is a malloc() failure.
|
||||||
*/
|
*/
|
||||||
createCollation(db, "BINARY", SQLITE_UTF8, 0, binCollFunc, 0);
|
createCollation(db, "BINARY", SQLITE_UTF8, SQLITE_COLL_BINARY, 0,
|
||||||
createCollation(db, "BINARY", SQLITE_UTF16BE, 0, binCollFunc, 0);
|
binCollFunc, 0);
|
||||||
createCollation(db, "BINARY", SQLITE_UTF16LE, 0, binCollFunc, 0);
|
createCollation(db, "BINARY", SQLITE_UTF16BE, SQLITE_COLL_BINARY, 0,
|
||||||
createCollation(db, "RTRIM", SQLITE_UTF8, (void*)1, binCollFunc, 0);
|
binCollFunc, 0);
|
||||||
|
createCollation(db, "BINARY", SQLITE_UTF16LE, SQLITE_COLL_BINARY, 0,
|
||||||
|
binCollFunc, 0);
|
||||||
|
createCollation(db, "RTRIM", SQLITE_UTF8, SQLITE_COLL_USER, (void*)1,
|
||||||
|
binCollFunc, 0);
|
||||||
if( db->mallocFailed ){
|
if( db->mallocFailed ){
|
||||||
goto opendb_out;
|
goto opendb_out;
|
||||||
}
|
}
|
||||||
@@ -1618,14 +1623,8 @@ static int openDatabase(
|
|||||||
assert( db->pDfltColl!=0 );
|
assert( db->pDfltColl!=0 );
|
||||||
|
|
||||||
/* Also add a UTF-8 case-insensitive collation sequence. */
|
/* Also add a UTF-8 case-insensitive collation sequence. */
|
||||||
createCollation(db, "NOCASE", SQLITE_UTF8, 0, nocaseCollatingFunc, 0);
|
createCollation(db, "NOCASE", SQLITE_UTF8, SQLITE_COLL_NOCASE, 0,
|
||||||
|
nocaseCollatingFunc, 0);
|
||||||
/* Set flags on the built-in collating sequences */
|
|
||||||
db->pDfltColl->type = SQLITE_COLL_BINARY;
|
|
||||||
pColl = sqlite3FindCollSeq(db, SQLITE_UTF8, "NOCASE", 0);
|
|
||||||
if( pColl ){
|
|
||||||
pColl->type = SQLITE_COLL_NOCASE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Open the backend database driver */
|
/* Open the backend database driver */
|
||||||
db->openFlags = flags;
|
db->openFlags = flags;
|
||||||
@@ -1806,7 +1805,7 @@ int sqlite3_create_collation(
|
|||||||
int rc;
|
int rc;
|
||||||
sqlite3_mutex_enter(db->mutex);
|
sqlite3_mutex_enter(db->mutex);
|
||||||
assert( !db->mallocFailed );
|
assert( !db->mallocFailed );
|
||||||
rc = createCollation(db, zName, enc, pCtx, xCompare, 0);
|
rc = createCollation(db, zName, enc, SQLITE_COLL_USER, pCtx, xCompare, 0);
|
||||||
rc = sqlite3ApiExit(db, rc);
|
rc = sqlite3ApiExit(db, rc);
|
||||||
sqlite3_mutex_leave(db->mutex);
|
sqlite3_mutex_leave(db->mutex);
|
||||||
return rc;
|
return rc;
|
||||||
@@ -1826,7 +1825,7 @@ int sqlite3_create_collation_v2(
|
|||||||
int rc;
|
int rc;
|
||||||
sqlite3_mutex_enter(db->mutex);
|
sqlite3_mutex_enter(db->mutex);
|
||||||
assert( !db->mallocFailed );
|
assert( !db->mallocFailed );
|
||||||
rc = createCollation(db, zName, enc, pCtx, xCompare, xDel);
|
rc = createCollation(db, zName, enc, SQLITE_COLL_USER, pCtx, xCompare, xDel);
|
||||||
rc = sqlite3ApiExit(db, rc);
|
rc = sqlite3ApiExit(db, rc);
|
||||||
sqlite3_mutex_leave(db->mutex);
|
sqlite3_mutex_leave(db->mutex);
|
||||||
return rc;
|
return rc;
|
||||||
@@ -1849,7 +1848,7 @@ int sqlite3_create_collation16(
|
|||||||
assert( !db->mallocFailed );
|
assert( !db->mallocFailed );
|
||||||
zName8 = sqlite3Utf16to8(db, zName, -1);
|
zName8 = sqlite3Utf16to8(db, zName, -1);
|
||||||
if( zName8 ){
|
if( zName8 ){
|
||||||
rc = createCollation(db, zName8, enc, pCtx, xCompare, 0);
|
rc = createCollation(db, zName8, enc, SQLITE_COLL_USER, pCtx, xCompare, 0);
|
||||||
sqlite3DbFree(db, zName8);
|
sqlite3DbFree(db, zName8);
|
||||||
}
|
}
|
||||||
rc = sqlite3ApiExit(db, rc);
|
rc = sqlite3ApiExit(db, rc);
|
||||||
|
|||||||
Reference in New Issue
Block a user