mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-08 14:02:16 +03:00
Avoid the use of function pointers in columnName(), as function pointers
appear to be a source of consternation to LLVM. FossilOrigin-Name: c48f6f39c5f89a338fed7153553a27a5d882d4d8db8221e911b96e0dd57c53d9
This commit is contained in:
12
manifest
12
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Progress\shandler\simprovements:\n(1)\sInvoke\sthe\scallback\safter\sOP_Program\sopcodes\n(2)\sInvoke\sthe\scallback\smultiple\stimes\sin\sa\srow\sto\scatch\sup\safter\sa\nlong\srun\sof\sno\sprogress\schecks.
|
C Avoid\sthe\suse\sof\sfunction\spointers\sin\scolumnName(),\sas\sfunction\spointers\nappear\sto\sbe\sa\ssource\sof\sconsternation\sto\sLLVM.
|
||||||
D 2019-02-20T13:55:45.206
|
D 2019-02-20T18:13:57.436
|
||||||
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 Makefile.in 178d8eb6840771149cee40b322d1b3be30d330198c522c903c1b66fb5a1bfca4
|
F Makefile.in 178d8eb6840771149cee40b322d1b3be30d330198c522c903c1b66fb5a1bfca4
|
||||||
@@ -589,7 +589,7 @@ F src/vacuum.c a9f389f41556c0ec310bc9169dc9476603c30a0a913ad92bfbc75c86886967ca
|
|||||||
F src/vdbe.c f11f5b935d0858ffeb3b2f0f50d9f4c368b8100c2ae6761178828e2aa38b63f2
|
F src/vdbe.c f11f5b935d0858ffeb3b2f0f50d9f4c368b8100c2ae6761178828e2aa38b63f2
|
||||||
F src/vdbe.h 712bca562eaed1c25506b9faf9680bdc75fc42e2f4a1cd518d883fa79c7a4237
|
F src/vdbe.h 712bca562eaed1c25506b9faf9680bdc75fc42e2f4a1cd518d883fa79c7a4237
|
||||||
F src/vdbeInt.h a76d5eed62c76bcd8de7afd3147fac1bc40c5a870582664bcd7d071ef437c37f
|
F src/vdbeInt.h a76d5eed62c76bcd8de7afd3147fac1bc40c5a870582664bcd7d071ef437c37f
|
||||||
F src/vdbeapi.c 57a2d794a8833f269b878dbc24e955369bdb379af6c4e93ebc5ce1a20fa3daf4
|
F src/vdbeapi.c cde63790c9d18ba5941d52c9f49e1a862cf6503141d5b9c112a05eb0adbf30a9
|
||||||
F src/vdbeaux.c 4fa28b32452f6197dba7c8780dde11576b9a6d8ce6f35adbb69efc3e7d37fa0c
|
F src/vdbeaux.c 4fa28b32452f6197dba7c8780dde11576b9a6d8ce6f35adbb69efc3e7d37fa0c
|
||||||
F src/vdbeblob.c f5c70f973ea3a9e915d1693278a5f890dc78594300cf4d54e64f2b0917c94191
|
F src/vdbeblob.c f5c70f973ea3a9e915d1693278a5f890dc78594300cf4d54e64f2b0917c94191
|
||||||
F src/vdbemem.c 3e89e087df928eba80e520824078dc563c579a0848b1557ac36845ec14392923
|
F src/vdbemem.c 3e89e087df928eba80e520824078dc563c579a0848b1557ac36845ec14392923
|
||||||
@@ -1805,7 +1805,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 fa792714ae62fa980f1767acc6d622a6727ceb677870243c88548423795dcb5b
|
P 0c5db18d79366d9c23925ce3ed835500311f32a10aa7dbfdd09148b1e8a2507b
|
||||||
R cb450b63e0ffca7c3eab4ce48996cd46
|
R f560accc195a8327b3c508cd93ca6133
|
||||||
U drh
|
U drh
|
||||||
Z b23f78f7b715d3492f6587cfb6b97b37
|
Z c7b49bfb62bb08bc015b1f1c480e7f4b
|
||||||
|
@@ -1 +1 @@
|
|||||||
0c5db18d79366d9c23925ce3ed835500311f32a10aa7dbfdd09148b1e8a2507b
|
c48f6f39c5f89a338fed7153553a27a5d882d4d8db8221e911b96e0dd57c53d9
|
@@ -1120,10 +1120,10 @@ int sqlite3_column_type(sqlite3_stmt *pStmt, int i){
|
|||||||
** or a constant) then useTypes 2, 3, and 4 return NULL.
|
** or a constant) then useTypes 2, 3, and 4 return NULL.
|
||||||
*/
|
*/
|
||||||
static const void *columnName(
|
static const void *columnName(
|
||||||
sqlite3_stmt *pStmt,
|
sqlite3_stmt *pStmt, /* The statement */
|
||||||
int N,
|
int N, /* Which column to get the name for */
|
||||||
const void *(*xFunc)(Mem*),
|
int useUtf16, /* True to return the name as UTF16 */
|
||||||
int useType
|
int useType /* What type of name */
|
||||||
){
|
){
|
||||||
const void *ret;
|
const void *ret;
|
||||||
Vdbe *p;
|
Vdbe *p;
|
||||||
@@ -1144,8 +1144,12 @@ static const void *columnName(
|
|||||||
N += useType*n;
|
N += useType*n;
|
||||||
sqlite3_mutex_enter(db->mutex);
|
sqlite3_mutex_enter(db->mutex);
|
||||||
assert( db->mallocFailed==0 );
|
assert( db->mallocFailed==0 );
|
||||||
ret = xFunc(&p->aColName[N]);
|
if( useUtf16 ){
|
||||||
/* A malloc may have failed inside of the xFunc() call. If this
|
ret = sqlite3_value_text16((sqlite3_value*)&p->aColName[N]);
|
||||||
|
}else{
|
||||||
|
ret = sqlite3_value_text((sqlite3_value*)&p->aColName[N]);
|
||||||
|
}
|
||||||
|
/* A malloc may have failed inside of the _text() call. If this
|
||||||
** is the case, clear the mallocFailed flag and return NULL.
|
** is the case, clear the mallocFailed flag and return NULL.
|
||||||
*/
|
*/
|
||||||
if( db->mallocFailed ){
|
if( db->mallocFailed ){
|
||||||
@@ -1162,13 +1166,11 @@ static const void *columnName(
|
|||||||
** statement pStmt.
|
** statement pStmt.
|
||||||
*/
|
*/
|
||||||
const char *sqlite3_column_name(sqlite3_stmt *pStmt, int N){
|
const char *sqlite3_column_name(sqlite3_stmt *pStmt, int N){
|
||||||
return columnName(
|
return columnName(pStmt, N, 0, COLNAME_NAME);
|
||||||
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_NAME);
|
|
||||||
}
|
}
|
||||||
#ifndef SQLITE_OMIT_UTF16
|
#ifndef SQLITE_OMIT_UTF16
|
||||||
const void *sqlite3_column_name16(sqlite3_stmt *pStmt, int N){
|
const void *sqlite3_column_name16(sqlite3_stmt *pStmt, int N){
|
||||||
return columnName(
|
return columnName(pStmt, N, 1, COLNAME_NAME);
|
||||||
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_NAME);
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -1187,13 +1189,11 @@ const void *sqlite3_column_name16(sqlite3_stmt *pStmt, int N){
|
|||||||
** of the result set of SQL statement pStmt.
|
** of the result set of SQL statement pStmt.
|
||||||
*/
|
*/
|
||||||
const char *sqlite3_column_decltype(sqlite3_stmt *pStmt, int N){
|
const char *sqlite3_column_decltype(sqlite3_stmt *pStmt, int N){
|
||||||
return columnName(
|
return columnName(pStmt, N, 0, COLNAME_DECLTYPE);
|
||||||
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_DECLTYPE);
|
|
||||||
}
|
}
|
||||||
#ifndef SQLITE_OMIT_UTF16
|
#ifndef SQLITE_OMIT_UTF16
|
||||||
const void *sqlite3_column_decltype16(sqlite3_stmt *pStmt, int N){
|
const void *sqlite3_column_decltype16(sqlite3_stmt *pStmt, int N){
|
||||||
return columnName(
|
return columnName(pStmt, N, 1, COLNAME_DECLTYPE);
|
||||||
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_DECLTYPE);
|
|
||||||
}
|
}
|
||||||
#endif /* SQLITE_OMIT_UTF16 */
|
#endif /* SQLITE_OMIT_UTF16 */
|
||||||
#endif /* SQLITE_OMIT_DECLTYPE */
|
#endif /* SQLITE_OMIT_DECLTYPE */
|
||||||
@@ -1205,13 +1205,11 @@ const void *sqlite3_column_decltype16(sqlite3_stmt *pStmt, int N){
|
|||||||
** anything else which is not an unambiguous reference to a database column.
|
** anything else which is not an unambiguous reference to a database column.
|
||||||
*/
|
*/
|
||||||
const char *sqlite3_column_database_name(sqlite3_stmt *pStmt, int N){
|
const char *sqlite3_column_database_name(sqlite3_stmt *pStmt, int N){
|
||||||
return columnName(
|
return columnName(pStmt, N, 0, COLNAME_DATABASE);
|
||||||
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_DATABASE);
|
|
||||||
}
|
}
|
||||||
#ifndef SQLITE_OMIT_UTF16
|
#ifndef SQLITE_OMIT_UTF16
|
||||||
const void *sqlite3_column_database_name16(sqlite3_stmt *pStmt, int N){
|
const void *sqlite3_column_database_name16(sqlite3_stmt *pStmt, int N){
|
||||||
return columnName(
|
return columnName(pStmt, N, 1, COLNAME_DATABASE);
|
||||||
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_DATABASE);
|
|
||||||
}
|
}
|
||||||
#endif /* SQLITE_OMIT_UTF16 */
|
#endif /* SQLITE_OMIT_UTF16 */
|
||||||
|
|
||||||
@@ -1221,13 +1219,11 @@ const void *sqlite3_column_database_name16(sqlite3_stmt *pStmt, int N){
|
|||||||
** anything else which is not an unambiguous reference to a database column.
|
** anything else which is not an unambiguous reference to a database column.
|
||||||
*/
|
*/
|
||||||
const char *sqlite3_column_table_name(sqlite3_stmt *pStmt, int N){
|
const char *sqlite3_column_table_name(sqlite3_stmt *pStmt, int N){
|
||||||
return columnName(
|
return columnName(pStmt, N, 0, COLNAME_TABLE);
|
||||||
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_TABLE);
|
|
||||||
}
|
}
|
||||||
#ifndef SQLITE_OMIT_UTF16
|
#ifndef SQLITE_OMIT_UTF16
|
||||||
const void *sqlite3_column_table_name16(sqlite3_stmt *pStmt, int N){
|
const void *sqlite3_column_table_name16(sqlite3_stmt *pStmt, int N){
|
||||||
return columnName(
|
return columnName(pStmt, N, 1, COLNAME_TABLE);
|
||||||
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_TABLE);
|
|
||||||
}
|
}
|
||||||
#endif /* SQLITE_OMIT_UTF16 */
|
#endif /* SQLITE_OMIT_UTF16 */
|
||||||
|
|
||||||
@@ -1237,13 +1233,11 @@ const void *sqlite3_column_table_name16(sqlite3_stmt *pStmt, int N){
|
|||||||
** anything else which is not an unambiguous reference to a database column.
|
** anything else which is not an unambiguous reference to a database column.
|
||||||
*/
|
*/
|
||||||
const char *sqlite3_column_origin_name(sqlite3_stmt *pStmt, int N){
|
const char *sqlite3_column_origin_name(sqlite3_stmt *pStmt, int N){
|
||||||
return columnName(
|
return columnName(pStmt, N, 0, COLNAME_COLUMN);
|
||||||
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_COLUMN);
|
|
||||||
}
|
}
|
||||||
#ifndef SQLITE_OMIT_UTF16
|
#ifndef SQLITE_OMIT_UTF16
|
||||||
const void *sqlite3_column_origin_name16(sqlite3_stmt *pStmt, int N){
|
const void *sqlite3_column_origin_name16(sqlite3_stmt *pStmt, int N){
|
||||||
return columnName(
|
return columnName(pStmt, N, 1, COLNAME_COLUMN);
|
||||||
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_COLUMN);
|
|
||||||
}
|
}
|
||||||
#endif /* SQLITE_OMIT_UTF16 */
|
#endif /* SQLITE_OMIT_UTF16 */
|
||||||
#endif /* SQLITE_ENABLE_COLUMN_METADATA */
|
#endif /* SQLITE_ENABLE_COLUMN_METADATA */
|
||||||
|
Reference in New Issue
Block a user