mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-07 02:42:48 +03:00
KeyInfo is now an indeterminate size, so we cannot declare a variable of that
type, only a pointer to an instance of that type. FossilOrigin-Name: 37b687dc2d3b9dc82ed09a9c5b2c00e576b1eebe358a20d18a3da190347b644e
This commit is contained in:
19
manifest
19
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Make\suse\sof\sthe\sflexible-array\sfeature\sof\sC99,\swhen\savailable,\sto\stry\sto\npacify\s-fsanitize=strict-bounds.\s\sThis\scheck-in\sfixes\sthe\score.\sThere\sis\nmore\syet\sto\sdo\sin\sFTS3,\sRTREE,\sand\sin\sFTS5.
|
C KeyInfo\sis\snow\san\sindeterminate\ssize,\sso\swe\scannot\sdeclare\sa\svariable\sof\sthat\ntype,\sonly\sa\spointer\sto\san\sinstance\sof\sthat\stype.
|
||||||
D 2025-03-14T18:10:02.673
|
D 2025-03-14T19:07:11.842
|
||||||
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 LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d
|
F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d
|
||||||
@@ -852,9 +852,9 @@ F src/util.c 36fb1150062957280777655976f3f9a75db236cb8207a0770ceae8d5ec17fcd3
|
|||||||
F src/vacuum.c fbfc3e074c865d2b5b10b8a65a3783275b80c152653590690747a102bb6cc770
|
F src/vacuum.c fbfc3e074c865d2b5b10b8a65a3783275b80c152653590690747a102bb6cc770
|
||||||
F src/vdbe.c b5deed01000b3970cfca089dc531cf9342afd96d00cc8b4ad26d303f088116ee
|
F src/vdbe.c b5deed01000b3970cfca089dc531cf9342afd96d00cc8b4ad26d303f088116ee
|
||||||
F src/vdbe.h 31eddcffc1d14c76c2a20fe4e137e1ee43d44f370896fae14a067052801a3625
|
F src/vdbe.h 31eddcffc1d14c76c2a20fe4e137e1ee43d44f370896fae14a067052801a3625
|
||||||
F src/vdbeInt.h 11041d559992165651413e5868a907f698a2ec7af169fb2d20eb058a9ccd2313
|
F src/vdbeInt.h 366843cb88740595011e091e180bb7258487ec9fd91c0b5a47cf9ff25620a482
|
||||||
F src/vdbeapi.c cb8eb9e41a16f5fa3ce5b8f3910edfbba336d10156cfb7a79f92cf7bf443977b
|
F src/vdbeapi.c a9ad72afed9aaec2acdde4daa5caa2f342b298f8c8859704143f6e3b78cb9966
|
||||||
F src/vdbeaux.c 932105750c15378176980288daea80008ffdac360716ae4e7c7f85bf462d272d
|
F src/vdbeaux.c 72a1c99d9300a5e0adff2c708074ac1355a619664301db474a48e147418fba05
|
||||||
F src/vdbeblob.c b1b4032cac46b41e44b957c4d00aee9851f862dfd85ecb68116ba49884b03dfd
|
F src/vdbeblob.c b1b4032cac46b41e44b957c4d00aee9851f862dfd85ecb68116ba49884b03dfd
|
||||||
F src/vdbemem.c 571ae3116dbf840a62c4aaa6bc09d577dfef8ad4d3978cf37275bb5f9653217b
|
F src/vdbemem.c 571ae3116dbf840a62c4aaa6bc09d577dfef8ad4d3978cf37275bb5f9653217b
|
||||||
F src/vdbesort.c 49e366d0216c782eba287bf602384e4330d2526a22f1275492d2785ce103c79b
|
F src/vdbesort.c 49e366d0216c782eba287bf602384e4330d2526a22f1275492d2785ce103c79b
|
||||||
@@ -2213,11 +2213,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
|
|||||||
F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
|
F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
|
||||||
F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139
|
F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139
|
||||||
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
||||||
P fa6f6ccdffc50024624306900efd2538c7415d8bdd0f02835b2e9c05adab3cf1
|
P 6fd6b32d06bd6a705e5140cd613af823b8183a6f6a9ceeeedfcf5e8b50821d68
|
||||||
R a7f539cde629f0570849a89a860ffc9d
|
R fe593c8c6938e177844eba6146548bc4
|
||||||
T *branch * flex-array
|
|
||||||
T *sym-flex-array *
|
|
||||||
T -sym-trunk *
|
|
||||||
U drh
|
U drh
|
||||||
Z ea27c767023e4b4e578a073476796f47
|
Z 1a2d68d765d400a0cfddfeaade189b5f
|
||||||
# Remove this line to create a well-formed Fossil manifest.
|
# Remove this line to create a well-formed Fossil manifest.
|
||||||
|
@@ -1 +1 @@
|
|||||||
6fd6b32d06bd6a705e5140cd613af823b8183a6f6a9ceeeedfcf5e8b50821d68
|
37b687dc2d3b9dc82ed09a9c5b2c00e576b1eebe358a20d18a3da190347b644e
|
||||||
|
@@ -544,7 +544,7 @@ struct PreUpdate {
|
|||||||
VdbeCursor *pCsr; /* Cursor to read old values from */
|
VdbeCursor *pCsr; /* Cursor to read old values from */
|
||||||
int op; /* One of SQLITE_INSERT, UPDATE, DELETE */
|
int op; /* One of SQLITE_INSERT, UPDATE, DELETE */
|
||||||
u8 *aRecord; /* old.* database record */
|
u8 *aRecord; /* old.* database record */
|
||||||
KeyInfo keyinfo;
|
KeyInfo *pKeyinfo; /* Key information */
|
||||||
UnpackedRecord *pUnpacked; /* Unpacked version of aRecord[] */
|
UnpackedRecord *pUnpacked; /* Unpacked version of aRecord[] */
|
||||||
UnpackedRecord *pNewUnpacked; /* Unpacked version of new.* record */
|
UnpackedRecord *pNewUnpacked; /* Unpacked version of new.* record */
|
||||||
int iNewReg; /* Register for new.* values */
|
int iNewReg; /* Register for new.* values */
|
||||||
@@ -556,6 +556,7 @@ struct PreUpdate {
|
|||||||
Table *pTab; /* Schema object being updated */
|
Table *pTab; /* Schema object being updated */
|
||||||
Index *pPk; /* PK index if pTab is WITHOUT ROWID */
|
Index *pPk; /* PK index if pTab is WITHOUT ROWID */
|
||||||
sqlite3_value **apDflt; /* Array of default values, if required */
|
sqlite3_value **apDflt; /* Array of default values, if required */
|
||||||
|
u8 keyinfoSpace[SZ_KEYINFO(0)]; /* Space to hold pKeyinfo[0] content */
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -2216,7 +2216,7 @@ int sqlite3_preupdate_old(sqlite3 *db, int iIdx, sqlite3_value **ppValue){
|
|||||||
if( !aRec ) goto preupdate_old_out;
|
if( !aRec ) goto preupdate_old_out;
|
||||||
rc = sqlite3BtreePayload(p->pCsr->uc.pCursor, 0, nRec, aRec);
|
rc = sqlite3BtreePayload(p->pCsr->uc.pCursor, 0, nRec, aRec);
|
||||||
if( rc==SQLITE_OK ){
|
if( rc==SQLITE_OK ){
|
||||||
p->pUnpacked = vdbeUnpackRecord(&p->keyinfo, nRec, aRec);
|
p->pUnpacked = vdbeUnpackRecord(p->pKeyinfo, nRec, aRec);
|
||||||
if( !p->pUnpacked ) rc = SQLITE_NOMEM;
|
if( !p->pUnpacked ) rc = SQLITE_NOMEM;
|
||||||
}
|
}
|
||||||
if( rc!=SQLITE_OK ){
|
if( rc!=SQLITE_OK ){
|
||||||
@@ -2281,7 +2281,7 @@ int sqlite3_preupdate_count(sqlite3 *db){
|
|||||||
#else
|
#else
|
||||||
p = db->pPreUpdate;
|
p = db->pPreUpdate;
|
||||||
#endif
|
#endif
|
||||||
return (p ? p->keyinfo.nKeyField : 0);
|
return (p ? p->pKeyinfo->nKeyField : 0);
|
||||||
}
|
}
|
||||||
#endif /* SQLITE_ENABLE_PREUPDATE_HOOK */
|
#endif /* SQLITE_ENABLE_PREUPDATE_HOOK */
|
||||||
|
|
||||||
@@ -2364,7 +2364,7 @@ int sqlite3_preupdate_new(sqlite3 *db, int iIdx, sqlite3_value **ppValue){
|
|||||||
Mem *pData = &p->v->aMem[p->iNewReg];
|
Mem *pData = &p->v->aMem[p->iNewReg];
|
||||||
rc = ExpandBlob(pData);
|
rc = ExpandBlob(pData);
|
||||||
if( rc!=SQLITE_OK ) goto preupdate_new_out;
|
if( rc!=SQLITE_OK ) goto preupdate_new_out;
|
||||||
pUnpack = vdbeUnpackRecord(&p->keyinfo, pData->n, pData->z);
|
pUnpack = vdbeUnpackRecord(p->pKeyinfo, pData->n, pData->z);
|
||||||
if( !pUnpack ){
|
if( !pUnpack ){
|
||||||
rc = SQLITE_NOMEM;
|
rc = SQLITE_NOMEM;
|
||||||
goto preupdate_new_out;
|
goto preupdate_new_out;
|
||||||
|
@@ -5524,10 +5524,11 @@ void sqlite3VdbePreUpdateHook(
|
|||||||
preupdate.pCsr = pCsr;
|
preupdate.pCsr = pCsr;
|
||||||
preupdate.op = op;
|
preupdate.op = op;
|
||||||
preupdate.iNewReg = iReg;
|
preupdate.iNewReg = iReg;
|
||||||
preupdate.keyinfo.db = db;
|
preupdate.pKeyinfo = (KeyInfo*)&preupdate.keyinfoSpace;
|
||||||
preupdate.keyinfo.enc = ENC(db);
|
preupdate.pKeyinfo->db = db;
|
||||||
preupdate.keyinfo.nKeyField = pTab->nCol;
|
preupdate.pKeyinfo->enc = ENC(db);
|
||||||
preupdate.keyinfo.aSortFlags = (u8*)&fakeSortOrder;
|
preupdate.pKeyinfo->nKeyField = pTab->nCol;
|
||||||
|
preupdate.pKeyinfo->aSortFlags = (u8*)&fakeSortOrder;
|
||||||
preupdate.iKey1 = iKey1;
|
preupdate.iKey1 = iKey1;
|
||||||
preupdate.iKey2 = iKey2;
|
preupdate.iKey2 = iKey2;
|
||||||
preupdate.pTab = pTab;
|
preupdate.pTab = pTab;
|
||||||
@@ -5537,8 +5538,8 @@ void sqlite3VdbePreUpdateHook(
|
|||||||
db->xPreUpdateCallback(db->pPreUpdateArg, db, op, zDb, zTbl, iKey1, iKey2);
|
db->xPreUpdateCallback(db->pPreUpdateArg, db, op, zDb, zTbl, iKey1, iKey2);
|
||||||
db->pPreUpdate = 0;
|
db->pPreUpdate = 0;
|
||||||
sqlite3DbFree(db, preupdate.aRecord);
|
sqlite3DbFree(db, preupdate.aRecord);
|
||||||
vdbeFreeUnpacked(db, preupdate.keyinfo.nKeyField+1, preupdate.pUnpacked);
|
vdbeFreeUnpacked(db, preupdate.pKeyinfo->nKeyField+1,preupdate.pUnpacked);
|
||||||
vdbeFreeUnpacked(db, preupdate.keyinfo.nKeyField+1, preupdate.pNewUnpacked);
|
vdbeFreeUnpacked(db, preupdate.pKeyinfo->nKeyField+1,preupdate.pNewUnpacked);
|
||||||
sqlite3VdbeMemRelease(&preupdate.oldipk);
|
sqlite3VdbeMemRelease(&preupdate.oldipk);
|
||||||
if( preupdate.aNew ){
|
if( preupdate.aNew ){
|
||||||
int i;
|
int i;
|
||||||
|
Reference in New Issue
Block a user