Good morning!
when trying to compile sqlite from Snapshop of the complete (raw) source tree
for SQLite version 3.27.2 and definingSQLITE_OMIT_VIEW and SQLITE_OMIT_TRIGGER
then compilation fails with the following messages:
###########
sqlite3.c:19044:20: warning: 'sqlite3FixExprList' used but never defined
SQLITE_PRIVATE int sqlite3FixExprList(DbFixer*, ExprList*);
^~~~~~~~~~~~~~~~~~
sqlite3.c:19044:20: warning: 'sqlite3FixExprList' used but never defined
SQLITE_PRIVATE int sqlite3FixExprList(DbFixer*, ExprList*);
/tmp/ccpmLeM3.o: In function `sqlite3FixSrcList':
/home/user/***/working/sqlite-src-3270200/sqlite3.c:106186: undefined reference
to `sqlite3FixExprList'
collect2: error: ld returned 1 exit status
make: *** [Makefile:648: sqlite3] Error 1
make: *** Waiting for unfinished jobs....
failed to build sqlite-src-3270200
############
This error seems to come from src/attach.c:
#if !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_TRIGGER)....int
sqlite3FixExprList(
DbFixer *pFix, /* Context of the fixation */
ExprList *pList /* The expression to be fixed to one database */
){
....}
#endif
....
#if !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_TRIGGER)
if( sqlite3FixSelect(pFix, pItem->pSelect) ) return 1;
if( sqlite3FixExpr(pFix, pItem->pOn) ) return 1;
#endif
if( pItem->fg.isTabFunc && sqlite3FixExprList(pFix, pItem->u1.pFuncArg) ){
return 1;
}
...
So the function sqlite3FixExprList() is not defined when both SQLITE_OMIT_VIEW
and SQLITE_OMIT_TRIGGER are set, but the function is used regardless of theboth
defines.
This seems to be a code defect to me. The two warnings (see beginning of this
email)seem also to be some leftover.
My hotfix is as follows:#### BEGIN PATCH ####
--- a/src/attach.c 2019-02-25 17:31:57.000000000 +0100
+++ b/src/attach.c 2019-03-26 16:29:11.613444974 +0100
@@ -507,10 +507,10 @@ int sqlite3FixSrcList(
#if !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_TRIGGER)
if( sqlite3FixSelect(pFix, pItem->pSelect) ) return 1;
if( sqlite3FixExpr(pFix, pItem->pOn) ) return 1;
-#endif
if( pItem->fg.isTabFunc && sqlite3FixExprList(pFix, pItem->u1.pFuncArg) ){
return 1;
}
+#endif
}
return 0;
}
#### PATCH END ####
This just makes the source compile but doesn't eliminate the both warnings.
RegardsRoman Konrad
_______________________________________________
sqlite-users mailing list
[email protected]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users