mirror of
https://github.com/sqlite/sqlite.git
synced 2025-11-11 01:42:22 +03:00
Use the sqlite3IndexColumnAffinity() routine to quickly and correctly find the
affinity of an index column. FossilOrigin-Name: 1ee089a72d789002a0a377347fc51e08ab32fb14
This commit is contained in:
13
src/insert.c
13
src/insert.c
@@ -69,7 +69,7 @@ void sqlite3OpenTable(
|
||||
** is managed along with the rest of the Index structure. It will be
|
||||
** released when sqlite3DeleteIndex() is called.
|
||||
*/
|
||||
const char *sqlite3IndexAffinityStr(Vdbe *v, Index *pIdx){
|
||||
const char *sqlite3IndexAffinityStr(sqlite3 *db, Index *pIdx){
|
||||
if( !pIdx->zColAff ){
|
||||
/* The first time a column affinity string for a particular index is
|
||||
** required, it is allocated and populated here. It is then stored as
|
||||
@@ -81,7 +81,6 @@ const char *sqlite3IndexAffinityStr(Vdbe *v, Index *pIdx){
|
||||
*/
|
||||
int n;
|
||||
Table *pTab = pIdx->pTable;
|
||||
sqlite3 *db = sqlite3VdbeDb(v);
|
||||
pIdx->zColAff = (char *)sqlite3DbMallocRaw(0, pIdx->nColumn+1);
|
||||
if( !pIdx->zColAff ){
|
||||
db->mallocFailed = 1;
|
||||
@@ -97,6 +96,16 @@ const char *sqlite3IndexAffinityStr(Vdbe *v, Index *pIdx){
|
||||
return pIdx->zColAff;
|
||||
}
|
||||
|
||||
/*
|
||||
** Return the affinity for a single column of an index.
|
||||
*/
|
||||
char sqlite3IndexColumnAffinity(sqlite3 *db, Index *pIdx, int iCol){
|
||||
if( !pIdx->zColAff ){
|
||||
if( sqlite3IndexAffinityStr(db, pIdx)==0 ) return SQLITE_AFF_BLOB;
|
||||
}
|
||||
return pIdx->zColAff[iCol];
|
||||
}
|
||||
|
||||
/*
|
||||
** Compute the affinity string for table pTab, if it has not already been
|
||||
** computed. As an optimization, omit trailing SQLITE_AFF_BLOB affinities.
|
||||
|
||||
Reference in New Issue
Block a user