aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2008-12-09 01:32:03 +0000
committerdrh <drh@noemail.net>2008-12-09 01:32:03 +0000
commitec1724e8884e202e5034f30f87a697918e4d637c (patch)
treef558321adba3dadf497017e3a04c86e806fa9688 /src
parentb3190c1501420f55fc97977489ebdfb8cf315286 (diff)
downloadsqlite-ec1724e8884e202e5034f30f87a697918e4d637c.tar.gz
sqlite-ec1724e8884e202e5034f30f87a697918e4d637c.zip
Fix compiler warnings in where.c and in the TCL test harness. (CVS 5994)
FossilOrigin-Name: 680755dbf01e20569b87068b1515b144903c566e
Diffstat (limited to 'src')
-rw-r--r--src/sqliteInt.h5
-rw-r--r--src/test6.c6
-rw-r--r--src/test_devsym.c8
-rw-r--r--src/test_onefile.c8
-rw-r--r--src/where.c36
5 files changed, 33 insertions, 30 deletions
diff --git a/src/sqliteInt.h b/src/sqliteInt.h
index e3a1834dc..75b242882 100644
--- a/src/sqliteInt.h
+++ b/src/sqliteInt.h
@@ -11,7 +11,7 @@
*************************************************************************
** Internal interface definitions for SQLite.
**
-** @(#) $Id: sqliteInt.h,v 1.805 2008/12/08 21:37:15 drh Exp $
+** @(#) $Id: sqliteInt.h,v 1.806 2008/12/09 01:32:03 drh Exp $
*/
#ifndef _SQLITEINT_H_
#define _SQLITEINT_H_
@@ -1527,7 +1527,8 @@ struct WhereLevel {
int addrNxt; /* Jump here to start the next IN combination */
int addrCont; /* Jump here to continue with the next loop cycle */
int addrFirst; /* First instruction of interior of the loop */
- int op, p1, p2, p5; /* Opcode used to terminate the loop */
+ int op, p1, p2; /* Opcode used to terminate the loop */
+ u8 p5; /* P5 operand of the opcode that terminates the loop */
int nEq; /* Number of == or IN constraints on this loop */
int nIn; /* Number of IN operators constraining this loop */
struct InLoop {
diff --git a/src/test6.c b/src/test6.c
index 8805cb80f..f95c2043e 100644
--- a/src/test6.c
+++ b/src/test6.c
@@ -14,7 +14,7 @@
** the effect on the database file of an OS crash or power failure. This
** is used to test the ability of SQLite to recover from those situations.
**
-** $Id: test6.c,v 1.39 2008/06/06 11:11:26 danielk1977 Exp $
+** $Id: test6.c,v 1.40 2008/12/09 01:32:03 drh Exp $
*/
#if SQLITE_TEST /* This file is used for testing only */
#include "sqliteInt.h"
@@ -606,9 +606,9 @@ static void cfDlError(sqlite3_vfs *pCfVfs, int nByte, char *zErrMsg){
sqlite3_vfs *pVfs = (sqlite3_vfs *)pCfVfs->pAppData;
pVfs->xDlError(pVfs, nByte, zErrMsg);
}
-static void *cfDlSym(sqlite3_vfs *pCfVfs, void *pHandle, const char *zSymbol){
+static void (*cfDlSym(sqlite3_vfs *pCfVfs, void *pH, const char *zSym))(void){
sqlite3_vfs *pVfs = (sqlite3_vfs *)pCfVfs->pAppData;
- return pVfs->xDlSym(pVfs, pHandle, zSymbol);
+ return pVfs->xDlSym(pVfs, pH, zSym);
}
static void cfDlClose(sqlite3_vfs *pCfVfs, void *pHandle){
sqlite3_vfs *pVfs = (sqlite3_vfs *)pCfVfs->pAppData;
diff --git a/src/test_devsym.c b/src/test_devsym.c
index 0e2673a42..d428e4dc6 100644
--- a/src/test_devsym.c
+++ b/src/test_devsym.c
@@ -14,7 +14,7 @@
** different device types (by overriding the return values of the
** xDeviceCharacteristics() and xSectorSize() methods).
**
-** $Id: test_devsym.c,v 1.8 2008/09/12 10:22:40 danielk1977 Exp $
+** $Id: test_devsym.c,v 1.9 2008/12/09 01:32:03 drh Exp $
*/
#if SQLITE_TEST /* This file is used for testing only */
@@ -63,7 +63,7 @@ static int devsymFullPathname(sqlite3_vfs*, const char *zName, int, char *zOut);
#ifndef SQLITE_OMIT_LOAD_EXTENSION
static void *devsymDlOpen(sqlite3_vfs*, const char *zFilename);
static void devsymDlError(sqlite3_vfs*, int nByte, char *zErrMsg);
-static void *devsymDlSym(sqlite3_vfs*,void*, const char *zSymbol);
+static void (*devsymDlSym(sqlite3_vfs*,void*, const char *zSymbol))(void);
static void devsymDlClose(sqlite3_vfs*, void*);
#endif /* SQLITE_OMIT_LOAD_EXTENSION */
static int devsymRandomness(sqlite3_vfs*, int nByte, char *zOut);
@@ -300,8 +300,8 @@ static void devsymDlError(sqlite3_vfs *pVfs, int nByte, char *zErrMsg){
/*
** Return a pointer to the symbol zSymbol in the dynamic library pHandle.
*/
-static void *devsymDlSym(sqlite3_vfs *pVfs, void *pHandle, const char *zSymbol){
- return sqlite3OsDlSym(g.pVfs, pHandle, zSymbol);
+static void (*devsymDlSym(sqlite3_vfs *pVfs, void *p, const char *zSym))(void){
+ return sqlite3OsDlSym(g.pVfs, p, zSym);
}
/*
diff --git a/src/test_onefile.c b/src/test_onefile.c
index c8cc43c80..098650816 100644
--- a/src/test_onefile.c
+++ b/src/test_onefile.c
@@ -10,7 +10,7 @@
**
*************************************************************************
**
-** $Id: test_onefile.c,v 1.9 2008/06/26 10:54:12 danielk1977 Exp $
+** $Id: test_onefile.c,v 1.10 2008/12/09 01:32:03 drh Exp $
**
** OVERVIEW:
**
@@ -168,7 +168,7 @@ static int fsAccess(sqlite3_vfs*, const char *zName, int flags, int *);
static int fsFullPathname(sqlite3_vfs*, const char *zName, int nOut,char *zOut);
static void *fsDlOpen(sqlite3_vfs*, const char *zFilename);
static void fsDlError(sqlite3_vfs*, int nByte, char *zErrMsg);
-static void *fsDlSym(sqlite3_vfs*,void*, const char *zSymbol);
+static void (*fsDlSym(sqlite3_vfs*,void*, const char *zSymbol))(void);
static void fsDlClose(sqlite3_vfs*, void*);
static int fsRandomness(sqlite3_vfs*, int nByte, char *zOut);
static int fsSleep(sqlite3_vfs*, int microseconds);
@@ -765,9 +765,9 @@ static void fsDlError(sqlite3_vfs *pVfs, int nByte, char *zErrMsg){
/*
** Return a pointer to the symbol zSymbol in the dynamic library pHandle.
*/
-static void *fsDlSym(sqlite3_vfs *pVfs, void *pHandle, const char *zSymbol){
+static void (*fsDlSym(sqlite3_vfs *pVfs, void *pH, const char *zSym))(void){
sqlite3_vfs *pParent = ((fs_vfs_t *)pVfs)->pParent;
- return pParent->xDlSym(pParent, pHandle, zSymbol);
+ return pParent->xDlSym(pParent, pH, zSym);
}
/*
diff --git a/src/where.c b/src/where.c
index eee68336c..93a932b5d 100644
--- a/src/where.c
+++ b/src/where.c
@@ -16,7 +16,7 @@
** so is applicable. Because this module is responsible for selecting
** indices, you might also think of this module as the "query optimizer".
**
-** $Id: where.c,v 1.334 2008/12/08 21:37:16 drh Exp $
+** $Id: where.c,v 1.335 2008/12/09 01:32:03 drh Exp $
*/
#include "sqliteInt.h"
@@ -80,9 +80,9 @@ typedef struct ExprMaskSet ExprMaskSet;
typedef struct WhereTerm WhereTerm;
struct WhereTerm {
Expr *pExpr; /* Pointer to the subexpression that is this term */
- i16 iParent; /* Disable pWC->a[iParent] when this term disabled */
- i16 leftCursor; /* Cursor number of X in "X <op> <expr>" */
- i16 leftColumn; /* Column number of X in "X <op> <expr>" */
+ int iParent; /* Disable pWC->a[iParent] when this term disabled */
+ int leftCursor; /* Cursor number of X in "X <op> <expr>" */
+ int leftColumn; /* Column number of X in "X <op> <expr>" */
u16 eOperator; /* A WO_xx value describing <op> */
u8 wtFlags; /* TERM_xxx bit flags. See below */
u8 nChild; /* Number of children that must disable us */
@@ -110,7 +110,7 @@ struct WhereClause {
int nTerm; /* Number of terms */
int nSlot; /* Number of entries in a[] */
WhereTerm *a; /* Each a[] describes a term of the WHERE cluase */
- WhereTerm aStatic[10]; /* Initial static space for a[] */
+ WhereTerm aStatic[4]; /* Initial static space for a[] */
};
/*
@@ -160,6 +160,8 @@ struct ExprMaskSet {
#define WO_ISNULL 0x080
#define WO_OR 0x100
+#define WO_ALL 0xfff /* Mask of all possible WO_* values */
+
/*
** Value for wsFlags returned by bestIndex(). These flags determine which
** search strategies are appropriate.
@@ -238,7 +240,7 @@ static void whereClauseClear(WhereClause *pWC){
** calling this routine. Such pointers may be reinitialized by referencing
** the pWC->a[] array.
*/
-static int whereClauseInsert(WhereClause *pWC, Expr *p, u16 wtFlags){
+static int whereClauseInsert(WhereClause *pWC, Expr *p, u8 wtFlags){
WhereTerm *pTerm;
int idx;
if( pWC->nTerm>=pWC->nSlot ){
@@ -430,8 +432,8 @@ static void exprCommute(Parse *pParse, Expr *pExpr){
/*
** Translate from TK_xx operator to WO_xx bitmask.
*/
-static int operatorMask(int op){
- int c;
+static u16 operatorMask(int op){
+ u16 c;
assert( allowedOp(op) );
if( op==TK_IN ){
c = WO_IN;
@@ -440,7 +442,8 @@ static int operatorMask(int op){
}else if( op==TK_OR ){
c = WO_OR;
}else{
- c = WO_EQ<<(op-TK_EQ);
+ assert( (WO_EQ<<(op-TK_EQ)) < 0x7fff );
+ c = (u16)(WO_EQ<<(op-TK_EQ));
}
assert( op!=TK_ISNULL || c==WO_ISNULL );
assert( op!=TK_OR || c==WO_OR );
@@ -464,12 +467,13 @@ static WhereTerm *findTerm(
int iCur, /* Cursor number of LHS */
int iColumn, /* Column number of LHS */
Bitmask notReady, /* RHS must not overlap with this mask */
- u16 op, /* Mask of WO_xx values describing operator */
+ u32 op, /* Mask of WO_xx values describing operator */
Index *pIdx /* Must be compatible with this index, if not NULL */
){
WhereTerm *pTerm;
int k;
assert( iCur>=0 );
+ op &= WO_ALL;
for(pTerm=pWC->a, k=pWC->nTerm; k; k--, pTerm++){
if( pTerm->leftCursor==iCur
&& (pTerm->prereqRight & notReady)==0
@@ -1297,7 +1301,6 @@ static double bestVirtualIndex(
*/
pIdxInfo = *ppIdxInfo;
if( pIdxInfo==0 ){
- WhereTerm *pTerm;
int nTerm;
WHERETRACE(("Recomputing index info for %s...\n", pTab->zName));
@@ -1361,7 +1364,7 @@ static double bestVirtualIndex(
if( pTerm->eOperator & (WO_IN|WO_ISNULL) ) continue;
pIdxCons[j].iColumn = pTerm->leftColumn;
pIdxCons[j].iTermOffset = i;
- pIdxCons[j].op = pTerm->eOperator;
+ pIdxCons[j].op = (u8)pTerm->eOperator;
/* The direct assignment in the previous line is possible only because
** the WO_ and SQLITE_INDEX_CONSTRAINT_ codes are identical. The
** following asserts verify this fact. */
@@ -1427,7 +1430,7 @@ static double bestVirtualIndex(
for(i=0; i<pIdxInfo->nConstraint; i++, pIdxCons++){
j = pIdxCons->iTermOffset;
pTerm = &pWC->a[j];
- pIdxCons->usable = (pTerm->prereqRight & notReady)==0;
+ pIdxCons->usable = (pTerm->prereqRight & notReady)==0 ?1:0;
}
memset(pUsage, 0, sizeof(pUsage[0])*pIdxInfo->nConstraint);
if( pIdxInfo->needToFreeIdxStr ){
@@ -2411,7 +2414,6 @@ WhereInfo *sqlite3WhereBegin(
/* Case 0: The table is a virtual-table. Use the VFilter and VNext
** to access the data.
*/
- int j;
int iReg; /* P3 Value for OP_VFilter */
sqlite3_index_info *pBestIdx = pLevel->pBestIdx;
int nConstraint = pBestIdx->nConstraint;
@@ -2423,7 +2425,6 @@ WhereInfo *sqlite3WhereBegin(
iReg = sqlite3GetTempRange(pParse, nConstraint+2);
pParse->disableColCache++;
for(j=1; j<=nConstraint; j++){
- int k;
for(k=0; k<nConstraint; k++){
if( aUsage[k].argvIndex==j ){
int iTerm = aConstraint[k].iTermOffset;
@@ -2597,10 +2598,11 @@ WhereInfo *sqlite3WhereBegin(
int startEq; /* True if range start uses ==, >= or <= */
int endEq; /* True if range end uses ==, >= or <= */
int start_constraints; /* Start of range is constrained */
- int k = pIdx->aiColumn[nEq]; /* Column for inequality constraints */
int nConstraint; /* Number of constraint terms */
int op;
+ k = pIdx->aiColumn[nEq]; /* Column for inequality constraints */
+
/* Generate code to evaluate all constraint terms using == or IN
** and store the values of those terms in an array of registers
** starting at regBase.
@@ -2701,7 +2703,7 @@ WhereInfo *sqlite3WhereBegin(
testcase( op==OP_IdxLT );
sqlite3VdbeAddOp4(v, op, iIdxCur, addrNxt, regBase,
SQLITE_INT_TO_PTR(nConstraint), P4_INT32);
- sqlite3VdbeChangeP5(v, endEq!=bRev);
+ sqlite3VdbeChangeP5(v, endEq!=bRev ?1:0);
/* If there are inequality constraints, check that the value
** of the table column that the inequality contrains is not NULL.