[tarantool-patches] [PATCH 5/8] Removes the following unused macros: SQL_ENABLE_MEMORY_MANAGEMENT SQL_ENABLE_UNKNOWN_SQL_FUNCTION SQL_SUBSTR_COMPATIBILITY SQL_ENABLE_STMT_SCANSTATUS
Stanislav Zudin
szudin at tarantool.org
Mon Apr 29 20:26:08 MSK 2019
Part of #3978
---
src/box/sql/expr.c | 6 ----
src/box/sql/func.c | 30 -----------------
src/box/sql/malloc.c | 10 ------
src/box/sql/resolve.c | 6 +---
src/box/sql/util.c | 3 +-
src/box/sql/vdbe.c | 9 -----
src/box/sql/vdbe.h | 7 ----
src/box/sql/vdbeInt.h | 5 ---
src/box/sql/vdbeapi.c | 73 -----------------------------------------
src/box/sql/vdbeaux.c | 45 -------------------------
src/box/sql/where.c | 11 +------
src/box/sql/whereInt.h | 12 -------
src/box/sql/wherecode.c | 52 +++++------------------------
13 files changed, 11 insertions(+), 258 deletions(-)
diff --git a/src/box/sql/expr.c b/src/box/sql/expr.c
index 0f87eba5e..71d0cbf46 100644
--- a/src/box/sql/expr.c
+++ b/src/box/sql/expr.c
@@ -3965,12 +3965,6 @@ sqlExprCodeTarget(Parse * pParse, Expr * pExpr, int target)
assert(!ExprHasProperty(pExpr, EP_IntValue));
zId = pExpr->u.zToken;
pDef = sqlFindFunction(db, zId, nFarg, 0);
-#ifdef SQL_ENABLE_UNKNOWN_SQL_FUNCTION
- if (pDef == 0 && pParse->explain) {
- pDef =
- sqlFindFunction(db, "unknown", nFarg, 0);
- }
-#endif
if (pDef == 0 || pDef->xFinalize != 0) {
diag_set(ClientError, ER_NO_SUCH_FUNCTION,
zId);
diff --git a/src/box/sql/func.c b/src/box/sql/func.c
index f3790ba01..a2b5bc0b5 100644
--- a/src/box/sql/func.c
+++ b/src/box/sql/func.c
@@ -429,16 +429,6 @@ substrFunc(sql_context * context, int argc, sql_value ** argv)
if (p1 < 0)
len = sql_utf8_char_count(z, sql_value_bytes(argv[0]));
}
-#ifdef SQL_SUBSTR_COMPATIBILITY
- /* If SUBSTR_COMPATIBILITY is defined then substr(X,0,N) work the same as
- * as substr(X,1,N) - it returns the first N characters of X. This
- * is essentially a back-out of the bug-fix in check-in [5fc125d362df4b8]
- * from 2009-02-02 for compatibility of applications that exploited the
- * old buggy behavior.
- */
- if (p1 == 0)
- p1 = 1; /* <rdar://problem/6778339> */
-#endif
if (argc == 3) {
p2 = sql_value_int(argv[2]);
if (p2 < 0) {
@@ -1491,23 +1481,6 @@ trim_func_three_args(struct sql_context *context, int argc, sql_value **argv)
sql_free(char_len);
}
-#ifdef SQL_ENABLE_UNKNOWN_SQL_FUNCTION
-/*
- * The "unknown" function is automatically substituted in place of
- * any unrecognized function name when doing an EXPLAIN or EXPLAIN QUERY PLAN
- * when the SQL_ENABLE_UNKNOWN_FUNCTION compile-time option is used.
- * When the "sql" command-line shell is built using this functionality,
- * that allows an EXPLAIN or EXPLAIN QUERY PLAN for complex queries
- * involving application-defined functions to be examined in a generic
- * sql shell.
- */
-static void
-unknownFunc(sql_context * context, int argc, sql_value ** argv)
-{
- /* no-op */
-}
-#endif /*SQL_ENABLE_UNKNOWN_SQL_FUNCTION */
-
/* IMP: R-25361-16150 This function is omitted from sql by default. It
* is only available if the SQL_SOUNDEX compile-time option is used
* when sql is built.
@@ -1977,9 +1950,6 @@ sqlRegisterBuiltinFunctions(void)
FIELD_TYPE_INTEGER),
LIKEFUNC(like, 3, 1, SQL_FUNC_LIKE,
FIELD_TYPE_INTEGER),
-#ifdef SQL_ENABLE_UNKNOWN_SQL_FUNCTION
- FUNCTION(unknown, -1, 0, 0, unknownFunc, 0),
-#endif
FUNCTION(coalesce, 1, 0, 0, 0, FIELD_TYPE_SCALAR),
FUNCTION(coalesce, 0, 0, 0, 0, FIELD_TYPE_SCALAR),
FUNCTION2(coalesce, -1, 0, 0, noopFunc, SQL_FUNC_COALESCE,
diff --git a/src/box/sql/malloc.c b/src/box/sql/malloc.c
index 3bd2e1781..831be177e 100644
--- a/src/box/sql/malloc.c
+++ b/src/box/sql/malloc.c
@@ -128,16 +128,12 @@ sql_sized_realloc(void *pPrior, int nByte)
int
sql_release_memory(int n)
{
-#ifdef SQL_ENABLE_MEMORY_MANAGEMENT
- return sqlPcacheReleaseMemory(n);
-#else
/* IMPLEMENTATION-OF: R-34391-24921 The sql_release_memory() routine
* is a no-op returning zero if sql is not compiled with
* SQL_ENABLE_MEMORY_MANAGEMENT.
*/
UNUSED_PARAMETER(n);
return 0;
-#endif
}
/*
@@ -297,12 +293,6 @@ mallocWithAlarm(int n, void **pp)
}
}
p = sql_sized_malloc(nFull);
-#ifdef SQL_ENABLE_MEMORY_MANAGEMENT
- if (p == 0 && mem0.alarmThreshold > 0) {
- sqlMallocAlarm(nFull);
- p = sql_sized_malloc(nFull);
- }
-#endif
if (p) {
nFull = sqlMallocSize(p);
sqlStatusUp(SQL_STATUS_MEMORY_USED, nFull);
diff --git a/src/box/sql/resolve.c b/src/box/sql/resolve.c
index 504096e6d..1a021d4d1 100644
--- a/src/box/sql/resolve.c
+++ b/src/box/sql/resolve.c
@@ -674,11 +674,7 @@ resolveExprStep(Walker * pWalker, Expr * pExpr)
pParse->is_aborted = true;
pNC->nErr++;
is_agg = 0;
- } else if (no_such_func && pParse->db->init.busy == 0
-#ifdef SQL_ENABLE_UNKNOWN_SQL_FUNCTION
- && pParse->explain == 0
-#endif
- ) {
+ } else if (no_such_func && pParse->db->init.busy == 0) {
diag_set(ClientError, ER_NO_SUCH_FUNCTION, zId);
pParse->is_aborted = true;
pNC->nErr++;
diff --git a/src/box/sql/util.c b/src/box/sql/util.c
index 687a0f30f..31378041d 100644
--- a/src/box/sql/util.c
+++ b/src/box/sql/util.c
@@ -1337,8 +1337,7 @@ sqlLogEstToInt(LogEst x)
n -= 2;
else if (n >= 1)
n -= 1;
-#if defined(SQL_ENABLE_STMT_SCANSTATUS) || \
- defined(SQL_EXPLAIN_ESTIMATED_ROWS)
+#if defined(SQL_EXPLAIN_ESTIMATED_ROWS)
if (x > 60)
return (u64) LARGEST_INT64;
#else
diff --git a/src/box/sql/vdbe.c b/src/box/sql/vdbe.c
index 197df4bf3..624df25b8 100644
--- a/src/box/sql/vdbe.c
+++ b/src/box/sql/vdbe.c
@@ -705,9 +705,6 @@ int sqlVdbeExec(Vdbe *p)
start = sqlHwtime();
#endif
nVmStep++;
-#ifdef SQL_ENABLE_STMT_SCANSTATUS
- if (p->anExec) p->anExec[(int)(pOp-aOp)]++;
-#endif
/* Only allow tracing if SQL_DEBUG is defined.
*/
@@ -4954,9 +4951,6 @@ case OP_Program: { /* jump */
pFrame->aOp = p->aOp;
pFrame->nOp = p->nOp;
pFrame->token = pProgram->token;
-#ifdef SQL_ENABLE_STMT_SCANSTATUS
- pFrame->anExec = p->anExec;
-#endif
pEnd = &VdbeFrameMem(pFrame)[pFrame->nChildMem];
for(pMem=VdbeFrameMem(pFrame); pMem!=pEnd; pMem++) {
@@ -4986,9 +4980,6 @@ case OP_Program: { /* jump */
p->apCsr = (VdbeCursor **)&aMem[p->nMem];
p->aOp = aOp = pProgram->aOp;
p->nOp = pProgram->nOp;
-#ifdef SQL_ENABLE_STMT_SCANSTATUS
- p->anExec = 0;
-#endif
pOp = &aOp[-1];
break;
diff --git a/src/box/sql/vdbe.h b/src/box/sql/vdbe.h
index 5fb9d42ca..2a1a4402c 100644
--- a/src/box/sql/vdbe.h
+++ b/src/box/sql/vdbe.h
@@ -349,11 +349,4 @@ void sqlVdbeSetLineNumber(Vdbe *, int);
#define VdbeCoverageNeverTaken(v)
#define VDBE_OFFSET_LINENO(x) 0
#endif
-
-#ifdef SQL_ENABLE_STMT_SCANSTATUS
-void sqlVdbeScanStatus(Vdbe *, int, int, int, LogEst, const char *);
-#else
-#define sqlVdbeScanStatus(a,b,c,d,e)
-#endif
-
#endif /* SQL_VDBE_H */
diff --git a/src/box/sql/vdbeInt.h b/src/box/sql/vdbeInt.h
index eabec1519..a5933a5e7 100644
--- a/src/box/sql/vdbeInt.h
+++ b/src/box/sql/vdbeInt.h
@@ -446,11 +446,6 @@ struct Vdbe {
AuxData *pAuxData; /* Linked list of auxdata allocations */
/* Anonymous savepoint for aborts only */
Savepoint *anonymous_savepoint;
-#ifdef SQL_ENABLE_STMT_SCANSTATUS
- i64 *anExec; /* Number of times each op has been executed */
- int nScan; /* Entries in aScan[] */
- ScanStatus *aScan; /* Scan definitions for sql_stmt_scanstatus() */
-#endif
};
/*
diff --git a/src/box/sql/vdbeapi.c b/src/box/sql/vdbeapi.c
index e1d100e04..9593071f3 100644
--- a/src/box/sql/vdbeapi.c
+++ b/src/box/sql/vdbeapi.c
@@ -1575,76 +1575,3 @@ sql_expanded_sql(sql_stmt * pStmt)
return z;
}
-#ifdef SQL_ENABLE_STMT_SCANSTATUS
-/*
- * Return status data for a single loop within query pStmt.
- */
-int
-sql_stmt_scanstatus(sql_stmt * pStmt, /* Prepared statement being queried */
- int idx, /* Index of loop to report on */
- int iScanStatusOp, /* Which metric to return */
- void *pOut /* OUT: Write the answer here */
- )
-{
- Vdbe *p = (Vdbe *) pStmt;
- ScanStatus *pScan;
- if (idx < 0 || idx >= p->nScan)
- return 1;
- pScan = &p->aScan[idx];
- switch (iScanStatusOp) {
- case SQL_SCANSTAT_NLOOP:{
- *(sql_int64 *) pOut = p->anExec[pScan->addrLoop];
- break;
- }
- case SQL_SCANSTAT_NVISIT:{
- *(sql_int64 *) pOut = p->anExec[pScan->addrVisit];
- break;
- }
- case SQL_SCANSTAT_EST:{
- double r = 1.0;
- LogEst x = pScan->nEst;
- while (x < 100) {
- x += 10;
- r *= 0.5;
- }
- *(double *)pOut = r * sqlLogEstToInt(x);
- break;
- }
- case SQL_SCANSTAT_NAME:{
- *(const char **)pOut = pScan->zName;
- break;
- }
- case SQL_SCANSTAT_EXPLAIN:{
- if (pScan->addrExplain) {
- *(const char **)pOut =
- p->aOp[pScan->addrExplain].p4.z;
- } else {
- *(const char **)pOut = 0;
- }
- break;
- }
- case SQL_SCANSTAT_SELECTID:{
- if (pScan->addrExplain) {
- *(int *)pOut = p->aOp[pScan->addrExplain].p1;
- } else {
- *(int *)pOut = -1;
- }
- break;
- }
- default:{
- return 1;
- }
- }
- return 0;
-}
-
-/*
- * Zero all counters associated with the sql_stmt_scanstatus() data.
- */
-void
-sql_stmt_scanstatus_reset(sql_stmt * pStmt)
-{
- Vdbe *p = (Vdbe *) pStmt;
- memset(p->anExec, 0, p->nOp * sizeof(i64));
-}
-#endif /* SQL_ENABLE_STMT_SCANSTATUS */
diff --git a/src/box/sql/vdbeaux.c b/src/box/sql/vdbeaux.c
index 2f78e19d8..a90c492fe 100644
--- a/src/box/sql/vdbeaux.c
+++ b/src/box/sql/vdbeaux.c
@@ -743,33 +743,6 @@ sqlVdbeTakeOpArray(Vdbe * p, int *pnOp, int *pnMaxArg)
return aOp;
}
-#if defined(SQL_ENABLE_STMT_SCANSTATUS)
-/*
- * Add an entry to the array of counters managed by sql_stmt_scanstatus().
- */
-void
-sqlVdbeScanStatus(Vdbe * p, /* VM to add scanstatus() to */
- int addrExplain, /* Address of OP_Explain (or 0) */
- int addrLoop, /* Address of loop counter */
- int addrVisit, /* Address of rows visited counter */
- LogEst nEst, /* Estimated number of output rows */
- const char *zName) /* Name of table or index being scanned */
-{
- int nByte = (p->nScan + 1) * sizeof(ScanStatus);
- ScanStatus *aNew;
- aNew = (ScanStatus *) sqlDbRealloc(p->db, p->aScan, nByte);
- if (aNew) {
- ScanStatus *pNew = &aNew[p->nScan++];
- pNew->addrExplain = addrExplain;
- pNew->addrLoop = addrLoop;
- pNew->addrVisit = addrVisit;
- pNew->nEst = nEst;
- pNew->zName = sqlDbStrDup(p->db, zName);
- p->aScan = aNew;
- }
-}
-#endif
-
/*
* Change the value of the opcode, or P1, P2, P3, or P5 operands
* for a specific instruction.
@@ -1921,9 +1894,6 @@ sqlVdbeMakeReady(Vdbe * p, /* The VDBE */
p->apArg = allocSpace(&x, p->apArg, nArg * sizeof(Mem *));
p->apCsr =
allocSpace(&x, p->apCsr, nCursor * sizeof(VdbeCursor *));
-#ifdef SQL_ENABLE_STMT_SCANSTATUS
- p->anExec = allocSpace(&x, p->anExec, p->nOp * sizeof(i64));
-#endif
if (x.nNeeded == 0)
break;
x.pSpace = p->pFree = sqlDbMallocRawNN(db, x.nNeeded);
@@ -1944,9 +1914,6 @@ sqlVdbeMakeReady(Vdbe * p, /* The VDBE */
p->nMem = nMem;
initMemArray(p->aMem, nMem, db, MEM_Undefined);
memset(p->apCsr, 0, nCursor * sizeof(VdbeCursor *));
-#ifdef SQL_ENABLE_STMT_SCANSTATUS
- memset(p->anExec, 0, p->nOp * sizeof(i64));
-#endif
}
sqlVdbeRewind(p);
}
@@ -2002,9 +1969,6 @@ sqlVdbeFrameRestore(VdbeFrame * pFrame)
{
Vdbe *v = pFrame->v;
closeCursorsInFrame(v);
-#ifdef SQL_ENABLE_STMT_SCANSTATUS
- v->anExec = pFrame->anExec;
-#endif
v->aOp = pFrame->aOp;
v->nOp = pFrame->nOp;
v->aMem = pFrame->aMem;
@@ -2689,15 +2653,6 @@ sqlVdbeClearObject(sql * db, Vdbe * p)
vdbeFreeOpArray(db, p->aOp, p->nOp);
sqlDbFree(db, p->aColName);
sqlDbFree(db, p->zSql);
-#ifdef SQL_ENABLE_STMT_SCANSTATUS
- {
- int i;
- for (i = 0; i < p->nScan; i++) {
- sqlDbFree(db, p->aScan[i].zName);
- }
- sqlDbFree(db, p->aScan);
- }
-#endif
}
/*
diff --git a/src/box/sql/where.c b/src/box/sql/where.c
index 19ee2d03a..efd4f4f4b 100644
--- a/src/box/sql/where.c
+++ b/src/box/sql/where.c
@@ -4678,10 +4678,7 @@ sqlWhereBegin(Parse * pParse, /* The parser context */
*/
notReady = ~(Bitmask) 0;
for (ii = 0; ii < nTabList; ii++) {
- int addrExplain;
- int wsFlags;
pLevel = &pWInfo->a[ii];
- wsFlags = pLevel->pWLoop->wsFlags;
#ifndef SQL_OMIT_AUTOMATIC_INDEX
if ((pLevel->pWLoop->wsFlags & WHERE_AUTO_INDEX) != 0) {
constructAutomaticIndex(pParse, &pWInfo->sWC,
@@ -4691,17 +4688,11 @@ sqlWhereBegin(Parse * pParse, /* The parser context */
goto whereBeginError;
}
#endif
- addrExplain =
- sqlWhereExplainOneScan(pParse, pTabList, pLevel, ii,
+ sqlWhereExplainOneScan(pParse, pTabList, pLevel, ii,
pLevel->iFrom, wctrlFlags);
pLevel->addrBody = sqlVdbeCurrentAddr(v);
notReady = sqlWhereCodeOneLoopStart(pWInfo, ii, notReady);
pWInfo->iContinue = pLevel->addrCont;
- if ((wsFlags & WHERE_MULTI_OR) == 0
- && (wctrlFlags & WHERE_OR_SUBCLAUSE) == 0) {
- sqlWhereAddScanStatus(v, pTabList, pLevel,
- addrExplain);
- }
}
/* Done. */
diff --git a/src/box/sql/whereInt.h b/src/box/sql/whereInt.h
index 47430aef1..e39e00210 100644
--- a/src/box/sql/whereInt.h
+++ b/src/box/sql/whereInt.h
@@ -102,9 +102,6 @@ struct WhereLevel {
} u;
struct WhereLoop *pWLoop; /* The selected WhereLoop object */
Bitmask notReady; /* FROM entries not usable at this level */
-#ifdef SQL_ENABLE_STMT_SCANSTATUS
- int addrVisit; /* Address at which row is visited */
-#endif
};
/*
@@ -458,15 +455,6 @@ int sqlWhereExplainOneScan(Parse * pParse, /* Parse context */
int iFrom, /* Value for "from" column of output */
u16 wctrlFlags /* Flags passed to sqlWhereBegin() */
);
-#ifdef SQL_ENABLE_STMT_SCANSTATUS
-void sqlWhereAddScanStatus(Vdbe * v, /* Vdbe to add scanstatus entry to */
- SrcList * pSrclist, /* FROM clause pLvl reads data from */
- WhereLevel * pLvl, /* Level to add scanstatus() entry for */
- int addrExplain /* Address of OP_Explain (or 0) */
- );
-#else
-#define sqlWhereAddScanStatus(a, b, c, d) ((void)d)
-#endif
Bitmask sqlWhereCodeOneLoopStart(WhereInfo * pWInfo, /* Complete information about the WHERE clause */
int iLevel, /* Which level of pWInfo->a[] should be coded */
Bitmask notReady /* Which tables are currently available */
diff --git a/src/box/sql/wherecode.c b/src/box/sql/wherecode.c
index a453fe979..4dedb38a7 100644
--- a/src/box/sql/wherecode.c
+++ b/src/box/sql/wherecode.c
@@ -158,7 +158,7 @@ explainIndexRange(StrAccum * pStr, WhereLoop * pLoop)
/*
* This function is a no-op unless currently processing an EXPLAIN QUERY PLAN
- * command, or if either SQL_DEBUG or SQL_ENABLE_STMT_SCANSTATUS was
+ * command, or if SQL_DEBUG was
* defined at compile-time. If it is not a no-op, a single OP_Explain opcode
* is added to the output to describe the table scan strategy in pLevel.
*
@@ -174,7 +174,7 @@ sqlWhereExplainOneScan(Parse * pParse, /* Parse context */
u16 wctrlFlags) /* Flags passed to sqlWhereBegin() */
{
int ret = 0;
-#if !defined(SQL_DEBUG) && !defined(SQL_ENABLE_STMT_SCANSTATUS)
+#if !defined(SQL_DEBUG)
if (pParse->explain == 2)
#endif
{
@@ -269,34 +269,6 @@ sqlWhereExplainOneScan(Parse * pParse, /* Parse context */
return ret;
}
-#ifdef SQL_ENABLE_STMT_SCANSTATUS
-/*
- * Configure the VM passed as the first argument with an
- * sql_stmt_scanstatus() entry corresponding to the scan used to
- * implement level pLvl. Argument pSrclist is a pointer to the FROM
- * clause that the scan reads data from.
- *
- * If argument addrExplain is not 0, it must be the address of an
- * OP_Explain instruction that describes the same loop.
- */
-void
-sqlWhereAddScanStatus(Vdbe * v, /* Vdbe to add scanstatus entry to */
- SrcList * pSrclist, /* FROM clause pLvl reads data from */
- WhereLevel * pLvl, /* Level to add scanstatus() entry for */
- int addrExplain) /* Address of OP_Explain (or 0) */
-{
- const char *zObj = 0;
- WhereLoop *pLoop = pLvl->pWLoop;
- if (pLoop->pIndex != 0) {
- zObj = pLoop->pIndex->zName;
- } else {
- zObj = pSrclist->a[pLvl->iFrom].zName;
- }
- sqlVdbeScanStatus(v, addrExplain, pLvl->addrBody, pLvl->addrVisit,
- pLoop->nOut, zObj);
-}
-#endif
-
/*
* Disable a term in the WHERE clause. Except, do not disable the term
* if it controls a LEFT OUTER JOIN and it did not originate in the ON
@@ -1415,16 +1387,12 @@ sqlWhereCodeOneLoopStart(WhereInfo * pWInfo, /* Complete information about the W
|| db->mallocFailed);
if (pSubWInfo) {
WhereLoop *pSubLoop;
- int addrExplain =
- sqlWhereExplainOneScan(pParse,
- pOrTab,
- &pSubWInfo->a[0],
- iLevel,
- pLevel->iFrom,
- 0);
- sqlWhereAddScanStatus(v, pOrTab,
- &pSubWInfo->a[0],
- addrExplain);
+ sqlWhereExplainOneScan(pParse,
+ pOrTab,
+ &pSubWInfo->a[0],
+ iLevel,
+ pLevel->iFrom,
+ 0);
/* This is the sub-WHERE clause body. First skip over
* duplicate rows from prior sub-WHERE clauses, and record the
@@ -1578,10 +1546,6 @@ sqlWhereCodeOneLoopStart(WhereInfo * pWInfo, /* Complete information about the W
}
}
-#ifdef SQL_ENABLE_STMT_SCANSTATUS
- pLevel->addrVisit = sqlVdbeCurrentAddr(v);
-#endif
-
/* Insert code to test every subexpression that can be completely
* computed using the current set of tables.
*/
--
2.17.1
More information about the Tarantool-patches
mailing list