[tarantool-patches] Re: [PATCH v1 07/28] sql: remove SQL_OK error/status code

Vladislav Shpilevoy v.shpilevoy at tarantool.org
Fri Jun 14 01:24:47 MSK 2019


Thanks for the patch!

Consider my review fixes below and on the branch
in a separate commit.

======================================================

diff --git a/src/box/ck_constraint.c b/src/box/ck_constraint.c
index c54c87069..1cde27022 100644
--- a/src/box/ck_constraint.c
+++ b/src/box/ck_constraint.c
@@ -172,9 +172,7 @@ ck_constraint_program_run(struct ck_constraint *ck_constraint,
 	 * Get VDBE execution state and reset VM to run it
 	 * next time.
 	 */
-	if (sql_reset(ck_constraint->stmt) != 0)
-		return -1;
-	return 0;
+	return sql_reset(ck_constraint->stmt);
 }
 
 void
diff --git a/src/box/sql/cursor.c b/src/box/sql/cursor.c
index f4b19db96..bb2dae898 100644
--- a/src/box/sql/cursor.c
+++ b/src/box/sql/cursor.c
@@ -93,12 +93,8 @@ sqlCursorIsValidNN(BtCursor *pCur)
  *
  * For sqlCursorPayload(), the caller must ensure that pCur is pointing
  * to a valid row in the table.
- *
- * Return 0 on success or an error code if anything goes
- * wrong.  An error is returned if "offset+amt" is larger than
- * the available payload.
  */
-int
+void
 sqlCursorPayload(BtCursor *pCur, u32 offset, u32 amt, void *pBuf)
 {
 	assert(pCur->eState == CURSOR_VALID);
@@ -110,7 +106,6 @@ sqlCursorPayload(BtCursor *pCur, u32 offset, u32 amt, void *pBuf)
 	pPayload = tarantoolsqlPayloadFetch(pCur, &sz);
 	assert((uptr) (offset + amt) <= sz);
 	memcpy(pBuf, pPayload + offset, amt);
-	return 0;
 }
 
 /* Move the cursor so that it points to an entry near the key
diff --git a/src/box/sql/cursor.h b/src/box/sql/cursor.h
index 237411613..2628f86a3 100644
--- a/src/box/sql/cursor.h
+++ b/src/box/sql/cursor.h
@@ -64,7 +64,8 @@ int sqlCursorMovetoUnpacked(BtCursor *, UnpackedRecord * pUnKey, int *pRes);
 
 int sqlCursorNext(BtCursor *, int *pRes);
 int sqlCursorPrevious(BtCursor *, int *pRes);
-int sqlCursorPayload(BtCursor *, u32 offset, u32 amt, void *);
+void
+sqlCursorPayload(BtCursor *, u32 offset, u32 amt, void *);
 
 /**
  * Release tuple, free iterator, invalidate cursor's state.
diff --git a/src/box/sql/legacy.c b/src/box/sql/legacy.c
index f7e069ad9..42fd3d1a4 100644
--- a/src/box/sql/legacy.c
+++ b/src/box/sql/legacy.c
@@ -68,16 +68,15 @@ sql_exec(sql * db,	/* The database on which the SQL executes */
 	if (zSql == 0)
 		zSql = "";
 
-	while (rc == 0 && zSql[0]) {
+	while (rc == 0 && zSql[0] != 0) {
 		int nCol;
 		char **azVals = 0;
 
 		pStmt = 0;
 		rc = sql_prepare_v2(db, zSql, -1, &pStmt, &zLeftover);
-		assert(rc == 0 || pStmt == 0);
-		if (rc != 0) {
+		assert(rc == 0 || pStmt == NULL);
+		if (rc != 0)
 			continue;
-		}
 		if (!pStmt) {
 			/* this happens for a comment or white-space */
 			zSql = zLeftover;
diff --git a/src/box/sql/main.c b/src/box/sql/main.c
index 65d8de529..c97c25ada 100644
--- a/src/box/sql/main.c
+++ b/src/box/sql/main.c
@@ -144,12 +144,8 @@ sql_initialize(void)
 		memset(&sqlBuiltinFunctions, 0,
 		       sizeof(sqlBuiltinFunctions));
 		sqlRegisterBuiltinFunctions();
-		if (rc == 0) {
-			rc = sqlOsInit();
-		}
-		if (rc == 0) {
-			sqlGlobalConfig.isInit = 1;
-		}
+		sql_os_init();
+		sqlGlobalConfig.isInit = 1;
 		sqlGlobalConfig.inProgress = 0;
 	}
 
@@ -160,17 +156,14 @@ sql_initialize(void)
 	 */
 #ifndef NDEBUG
 	/* This section of code's only "output" is via assert() statements. */
-	if (rc == 0) {
-		u64 x = (((u64) 1) << 63) - 1;
-		double y;
-		assert(sizeof(x) == 8);
-		assert(sizeof(x) == sizeof(y));
-		memcpy(&y, &x, 8);
-		assert(sqlIsNaN(y));
-	}
+	u64 x = (((u64) 1) << 63) - 1;
+	double y;
+	assert(sizeof(x) == 8);
+	assert(sizeof(x) == sizeof(y));
+	memcpy(&y, &x, 8);
+	assert(sqlIsNaN(y));
 #endif
-
-	return rc;
+	return 0;
 }
 
 void
@@ -348,27 +341,6 @@ sql_create_function_v2(sql * db,
 	return rc;
 }
 
-#ifndef SQL_OMIT_TRACE
-/* Register a trace callback using the version-2 interface.
- */
-int
-sql_trace_v2(sql * db,		/* Trace this connection */
-		 unsigned mTrace,	/* Mask of events to be traced */
-		 int (*xTrace) (unsigned, void *, void *, void *),	/* Callback to invoke */
-		 void *pArg)		/* Context */
-{
-	if (mTrace == 0)
-		xTrace = 0;
-	if (xTrace == 0)
-		mTrace = 0;
-	db->mTrace = mTrace;
-	db->xTrace = xTrace;
-	db->pTraceArg = pArg;
-	return 0;
-}
-
-#endif				/* SQL_OMIT_TRACE */
-
 /*
  * This function returns true if main-memory should be used instead of
  * a temporary file for transient pager files and statement journals.
diff --git a/src/box/sql/os.c b/src/box/sql/os.c
index 5804e9aa4..10b68c8d9 100644
--- a/src/box/sql/os.c
+++ b/src/box/sql/os.c
@@ -177,22 +177,6 @@ sqlOsCloseFree(sql_file * pFile)
 	sql_free(pFile);
 }
 
-/*
- * This function is a wrapper around the OS specific implementation of
- * sql_os_init(). The purpose of the wrapper is to provide the
- * ability to simulate a malloc failure, so that the handling of an
- * error in sql_os_init() by the upper layers can be tested.
- */
-int
-sqlOsInit(void)
-{
-	void *p = sql_malloc(10);
-	if (p == 0)
-		return SQL_NOMEM;
-	sql_free(p);
-	return sql_os_init();
-}
-
 /*
  * The list of all registered VFS implementations.
  */
diff --git a/src/box/sql/os.h b/src/box/sql/os.h
index 9122e9cb7..3c891f3ee 100644
--- a/src/box/sql/os.h
+++ b/src/box/sql/os.h
@@ -126,11 +126,6 @@
 #define SHARED_FIRST      (PENDING_BYTE+2)
 #define SHARED_SIZE       510
 
-/*
- * Wrapper around OS specific sql_os_init() function.
- */
-int sqlOsInit(void);
-
 /*
  * Functions for accessing sql_file methods
  */
diff --git a/src/box/sql/os_unix.c b/src/box/sql/os_unix.c
index 41098df17..bf3ba0eb1 100644
--- a/src/box/sql/os_unix.c
+++ b/src/box/sql/os_unix.c
@@ -1827,9 +1827,8 @@ unixOpen(sql_vfs * pVfs,	/* The VFS for which this is the xOpen method */
 		/* If zName is NULL, the upper layer is requesting a temp file. */
 		assert(isDelete);
 		rc = unixGetTempname(pVfs->mxPathname, zTmpname);
-		if (rc != 0) {
+		if (rc != 0)
 			return rc;
-		}
 		zName = zTmpname;
 
 		/* Generated temporary filenames are always double-zero terminated
@@ -1911,9 +1910,8 @@ unixOpen(sql_vfs * pVfs,	/* The VFS for which this is the xOpen method */
 	rc = fillInUnixFile(pVfs, fd, pFile, zPath, ctrlFlags);
 
  open_finished:
-	if (rc != 0) {
+	if (rc != 0)
 		sql_free(p->pUnused);
-	}
 	return rc;
 }
 
@@ -1993,15 +1991,13 @@ int sql_current_time = 0;
  * epoch of noon in Greenwich on November 24, 4714 B.C according to the
  * proleptic Gregorian calendar.
  *
- * On success, return 0.  Return SQL_ERROR if the time and date
- * cannot be found.
+ * Always returns 0.
  */
 static int
 unixCurrentTimeInt64(sql_vfs * NotUsed, sql_int64 * piNow)
 {
 	static const sql_int64 unixEpoch =
 	    24405875 * (sql_int64) 8640000;
-	int rc = 0;
 	struct timeval sNow;
 	(void)gettimeofday(&sNow, 0);	/* Cannot fail given valid arguments */
 	*piNow =
@@ -2015,7 +2011,7 @@ unixCurrentTimeInt64(sql_vfs * NotUsed, sql_int64 * piNow)
 	}
 #endif
 	UNUSED_PARAMETER(NotUsed);
-	return rc;
+	return 0;
 }
 
 /*
@@ -2049,16 +2045,15 @@ unixCurrentTimeInt64(sql_vfs * NotUsed, sql_int64 * piNow)
  * Initialize the operating system interface.
  *
  * This routine registers all VFS implementations for unix-like operating
- * systems.  This routine, and the sql_os_end() routine that follows,
- * should be the only routines in this file that are visible from other
- * files.
+ * systems.  This routine should be the only one in this file that
+ * are visible from other files.
  *
  * This routine is called once during sql initialization and by a
  * single thread.  The memory allocation subsystem have not
  * necessarily been initialized when this routine \is called, and so they
  * should not be used.
  */
-int
+void
 sql_os_init(void)
 {
 	/*
@@ -2076,18 +2071,4 @@ sql_os_init(void)
 	/* Register all VFSes defined in the aVfs[] array. */
 	for (unsigned int i = 0; i < (sizeof(aVfs) / sizeof(sql_vfs)); i++)
 		sql_vfs_register(&aVfs[i], i == 0);
-	return 0;
-}
-
-/*
- * Shutdown the operating system interface.
- *
- * Some operating systems might need to do some cleanup in this routine,
- * to release dynamically allocated objects.  But not on unix.
- * This routine is a no-op for unix.
- */
-int
-sql_os_end(void)
-{
-	return 0;
 }
diff --git a/src/box/sql/prepare.c b/src/box/sql/prepare.c
index 5b0be3e37..7a8a2d810 100644
--- a/src/box/sql/prepare.c
+++ b/src/box/sql/prepare.c
@@ -107,7 +107,7 @@ sqlPrepare(sql * db,	/* Database handle. */
 	if (sParse.is_aborted)
 		rc = SQL_TARANTOOL_ERROR;
 
-	if (rc == 0 && sParse.pVdbe && sParse.explain) {
+	if (rc == 0 && sParse.pVdbe != NULL && sParse.explain) {
 		static const char *const azColName[] = {
 			/*  0 */ "addr",
 			/*  1 */ "INTEGER",
@@ -159,7 +159,7 @@ sqlPrepare(sql * db,	/* Database handle. */
 		sqlVdbeSetSql(pVdbe, zSql, (int)(sParse.zTail - zSql),
 				  saveSqlFlag);
 	}
-	if (sParse.pVdbe && (rc != 0 || db->mallocFailed)) {
+	if (sParse.pVdbe != NULL && (rc != 0 || db->mallocFailed)) {
 		sqlVdbeFinalize(sParse.pVdbe);
 		assert(!(*ppStmt));
 	} else {
@@ -201,7 +201,7 @@ sqlLockAndPrepare(sql * db,		/* Database handle. */
 		rc = sqlPrepare(db, zSql, nBytes, saveSqlFlag, pOld, ppStmt,
 				    pzTail);
 	}
-	assert(rc == 0 || *ppStmt == 0);
+	assert(rc == 0 || *ppStmt == NULL);
 	return rc;
 }
 
@@ -258,7 +258,7 @@ sql_prepare(sql * db,		/* Database handle. */
 {
 	int rc;
 	rc = sqlLockAndPrepare(db, zSql, nBytes, 0, 0, ppStmt, pzTail);
-	assert(rc == 0 || ppStmt == 0 || *ppStmt == 0);	/* VERIFY: F13021 */
+	assert(rc == 0 || ppStmt == NULL || *ppStmt == NULL);	/* VERIFY: F13021 */
 	return rc;
 }
 
@@ -272,7 +272,7 @@ sql_prepare_v2(sql * db,	/* Database handle. */
 {
 	int rc;
 	rc = sqlLockAndPrepare(db, zSql, nBytes, 1, 0, ppStmt, pzTail);
-	assert(rc == 0 || ppStmt == 0 || *ppStmt == 0);	/* VERIFY: F13021 */
+	assert(rc == 0 || ppStmt == NULL || *ppStmt == NULL);	/* VERIFY: F13021 */
 	return rc;
 }
 
diff --git a/src/box/sql/sqlInt.h b/src/box/sql/sqlInt.h
index 316810a11..42a29ad4f 100644
--- a/src/box/sql/sqlInt.h
+++ b/src/box/sql/sqlInt.h
@@ -673,9 +673,6 @@ sql_column_datatype(sql_stmt *, int N);
 int
 sql_initialize(void);
 
-int
-sql_os_end(void);
-
 #define SQL_CONFIG_SCRATCH       6	/* void*, int sz, int N */
 #define SQL_CONFIG_MEMSTATUS     9	/* boolean */
 #define SQL_CONFIG_LOG          16	/* xFunc, void* */
@@ -810,7 +807,7 @@ struct sql_io_methods {
 #define SQL_FCNTL_HAS_MOVED              18
 #define SQL_FCNTL_SYNC                   19
 
-int
+void
 sql_os_init(void);
 
 sql_int64
diff --git a/src/box/sql/vdbe.c b/src/box/sql/vdbe.c
index 77c6fa5b8..e11d29203 100644
--- a/src/box/sql/vdbe.c
+++ b/src/box/sql/vdbe.c
@@ -247,7 +247,7 @@ allocateCursor(
 		sqlVdbeFreeCursor(p, p->apCsr[iCur]);
 		p->apCsr[iCur] = 0;
 	}
-	if (0==sqlVdbeMemClearAndResize(pMem, nByte)) {
+	if (sqlVdbeMemClearAndResize(pMem, nByte) == 0) {
 		p->apCsr[iCur] = pCx = (VdbeCursor*)pMem->z;
 		memset(pCx, 0, offsetof(VdbeCursor,uc));
 		pCx->eCurType = eCurType;
@@ -372,7 +372,7 @@ static u16 SQL_NOINLINE computeNumericType(Mem *pMem)
 	assert((pMem->flags & (MEM_Str|MEM_Blob))!=0);
 	if (sqlAtoF(pMem->z, &pMem->u.r, pMem->n)==0)
 		return 0;
-	if (sql_atoi64(pMem->z, (int64_t *)&pMem->u.i, pMem->n)==0)
+	if (sql_atoi64(pMem->z, &pMem->u.i, pMem->n) == 0)
 		return MEM_Int;
 	return MEM_Real;
 }
@@ -752,7 +752,7 @@ int sqlVdbeExec(Vdbe *p)
 		 */
 		goto no_mem;
 	}
-	assert(p->rc==0 || (p->rc&0xff)==SQL_BUSY);
+	assert(p->rc == 0 || (p->rc & 0xff) == SQL_BUSY);
 	p->rc = 0;
 	p->iCurrentTime = 0;
 	assert(p->explain==0);
@@ -789,7 +789,7 @@ int sqlVdbeExec(Vdbe *p)
 		/* Errors are detected by individual opcodes, with an immediate
 		 * jumps to abort_due_to_error.
 		 */
-		assert(rc==0);
+		assert(rc == 0);
 
 		assert(pOp>=aOp && pOp<&aOp[p->nOp]);
 #ifdef VDBE_PROFILE
@@ -1036,7 +1036,7 @@ case OP_Halt: {
 	int pcx;
 
 	pcx = (int)(pOp - aOp);
-	if (pOp->p1==0 && p->pFrame) {
+	if (pOp->p1 == 0 && p->pFrame != NULL) {
 		/* Halt the sub-program. Return control to the parent frame. */
 		pFrame = p->pFrame;
 		p->pFrame = pFrame->pParent;
@@ -1068,11 +1068,11 @@ case OP_Halt: {
 		assert(! diag_is_empty(diag_get()));
 	}
 	rc = sqlVdbeHalt(p);
-	assert(rc==SQL_BUSY || rc==0 || rc==SQL_ERROR);
+	assert(rc == SQL_BUSY || rc == 0 || rc == SQL_ERROR);
 	if (rc==SQL_BUSY) {
 		p->rc = SQL_BUSY;
 	} else {
-		assert(rc==0 || (p->rc&0xff)==SQL_CONSTRAINT);
+		assert(rc == 0 || (p->rc & 0xff) == SQL_CONSTRAINT);
 		rc = p->rc ? SQL_TARANTOOL_ERROR : SQL_DONE;
 	}
 	goto vdbe_return;
@@ -1145,7 +1145,7 @@ case OP_String8: {         /* same as TK_STRING, out2 */
 	if (pOp->p1>db->aLimit[SQL_LIMIT_LENGTH]) {
 		goto too_big;
 	}
-	assert(rc==0);
+	assert(rc == 0);
 	/* Fall through to the next case, OP_String */
 	FALLTHROUGH;
 }
@@ -2883,9 +2883,8 @@ case OP_Savepoint: {
 			 */
 			int isTransaction = pSavepoint->pNext == 0;
 			if (isTransaction && p1==SAVEPOINT_RELEASE) {
-				if ((rc = sqlVdbeCheckFk(p, 1))!=0) {
+				if ((rc = sqlVdbeCheckFk(p, 1)) != 0)
 					goto vdbe_return;
-				}
 				if (sqlVdbeHalt(p)==SQL_BUSY) {
 					p->pc = (int)(pOp - aOp);
 					p->rc = rc = SQL_BUSY;
@@ -3933,9 +3932,9 @@ case OP_RowData: {
 	testcase( n==0);
 
 	sqlVdbeMemRelease(pOut);
-	if (sql_vdbe_mem_alloc_region(pOut, n) != 0 ||
-	    sqlCursorPayload(pCrsr, 0, n, pOut->z) != 0)
+	if (sql_vdbe_mem_alloc_region(pOut, n) != 0)
 		goto abort_due_to_error;
+	sqlCursorPayload(pCrsr, 0, n, pOut->z);
 	UPDATE_MAX_BLOBSIZE(pOut);
 	REGISTER_TRACE(p, pOp->p2, pOut);
 	break;
@@ -5291,7 +5290,7 @@ abort_due_to_error:
 vdbe_return:
 	testcase( nVmStep>0);
 	p->aCounter[SQL_STMTSTATUS_VM_STEP] += (int)nVmStep;
-	assert(rc!=0 || nExtraDelete==0
+	assert(rc != 0 || nExtraDelete == 0
 		|| sql_strlike_ci("DELETE%", p->zSql, 0) != 0
 		);
 	assert(rc == 0 || rc == SQL_BUSY || rc == SQL_TARANTOOL_ERROR ||
diff --git a/src/box/sql/vdbeaux.c b/src/box/sql/vdbeaux.c
index 483fced50..bda7a8af8 100644
--- a/src/box/sql/vdbeaux.c
+++ b/src/box/sql/vdbeaux.c
@@ -195,8 +195,9 @@ growOpArray(Vdbe * v, int nOp)
 		p->szOpAlloc = sqlMallocSize(pNew);
 		p->nOpAlloc = p->szOpAlloc / sizeof(Op);
 		v->aOp = pNew;
+		return 0;
 	}
-	return (pNew ? 0 : SQL_NOMEM);
+	return SQL_NOMEM;
 }
 
 #ifdef SQL_DEBUG
@@ -1514,11 +1515,9 @@ sqlVdbeList(Vdbe * p)
 					if (apSub[j] == pOp->p4.pProgram)
 						break;
 				}
-				if (j == nSub
-				    && 0 == sqlVdbeMemGrow(pSub,
-								       nByte,
-								       nSub !=
-								       0)) {
+				if (j == nSub &&
+				    sqlVdbeMemGrow(pSub, nByte,
+						   nSub != 0) == 0) {
 					apSub = (SubProgram **) pSub->z;
 					apSub[nSub++] = pOp->p4.pProgram;
 					pSub->flags |= MEM_Blob;
@@ -2234,9 +2233,8 @@ sqlVdbeHalt(Vdbe * p)
 		}
 
 		/* Check for immediate foreign key violations. */
-		if (p->rc == 0) {
+		if (p->rc == 0)
 			sqlVdbeCheckFk(p, 0);
-		}
 
 		/* If the auto-commit flag is set and this is the only active writer
 		 * VM, then we do either a commit or rollback of the current transaction.
@@ -2350,7 +2348,7 @@ sqlVdbeHalt(Vdbe * p)
 
 	assert(db->nVdbeActive > 0 || box_txn() ||
 	       p->anonymous_savepoint == NULL);
-	return (p->rc == SQL_BUSY ? SQL_BUSY : 0);
+	return p->rc == SQL_BUSY ? SQL_BUSY : 0;
 }
 
 /*
diff --git a/src/box/sql/vdbemem.c b/src/box/sql/vdbemem.c
index df8206eb4..3052bece1 100644
--- a/src/box/sql/vdbemem.c
+++ b/src/box/sql/vdbemem.c
@@ -1048,15 +1048,11 @@ vdbeMemFromBtreeResize(BtCursor * pCur,	/* Cursor pointing at record to retrieve
 	int rc;
 	pMem->flags = MEM_Null;
 	if (0 == (rc = sqlVdbeMemClearAndResize(pMem, amt + 2))) {
-		rc = sqlCursorPayload(pCur, offset, amt, pMem->z);
-		if (rc == 0) {
-			pMem->z[amt] = 0;
-			pMem->z[amt + 1] = 0;
-			pMem->flags = MEM_Blob | MEM_Term;
-			pMem->n = (int)amt;
-		} else {
-			sqlVdbeMemRelease(pMem);
-		}
+		sqlCursorPayload(pCur, offset, amt, pMem->z);
+		pMem->z[amt] = 0;
+		pMem->z[amt + 1] = 0;
+		pMem->flags = MEM_Blob | MEM_Term;
+		pMem->n = (int) amt;
 	}
 	return rc;
 }
@@ -1295,9 +1291,8 @@ valueFromFunction(sql * db,	/* The database connection */
 	assert(rc == 0);
 
  value_from_function_out:
-	if (rc != 0) {
+	if (rc != 0)
 		pVal = 0;
-	}
 	if (apVal) {
 		for (i = 0; i < nVal; i++) {
 			sqlValueFree(apVal[i]);
@@ -1568,9 +1563,8 @@ stat4ValueFromExpr(Parse * pParse,	/* Parse context */
 			if (pVal) {
 				rc = sqlVdbeMemCopy((Mem *) pVal,
 							&v->aVar[iBindVar - 1]);
-				if (rc == 0) {
+				if (rc == 0)
 					sql_value_apply_type(pVal, type);
-				}
 				pVal->db = pParse->db;
 			}
 		}
diff --git a/src/box/sql/vdbesort.c b/src/box/sql/vdbesort.c
index f7fc8e1cc..646f8fe33 100644
--- a/src/box/sql/vdbesort.c
+++ b/src/box/sql/vdbesort.c
@@ -688,7 +688,7 @@ vdbePmaReaderSeek(SortSubtask * pTask,	/* Task context */
 	pReadr->pFd = pFile->pFd;
 
 	rc = vdbeSorterMapFile(pTask, pFile, &pReadr->aMap);
-	if (rc == 0 && pReadr->aMap == 0) {
+	if (rc == 0 && pReadr->aMap == NULL) {
 		int pgsz = pTask->pSorter->pgsz;
 		int iBuf = pReadr->iReadOff % pgsz;
 		if (pReadr->aBuffer == 0) {
@@ -697,7 +697,7 @@ vdbePmaReaderSeek(SortSubtask * pTask,	/* Task context */
 				rc = SQL_NOMEM;
 			pReadr->nBuffer = pgsz;
 		}
-		if (rc == 0 && iBuf) {
+		if (rc == 0 && iBuf != 0) {
 			int nRead = pgsz - iBuf;
 			if ((pReadr->iReadOff + nRead) > pReadr->iEof) {
 				nRead = (int)(pReadr->iEof - pReadr->iReadOff);
@@ -742,9 +742,8 @@ vdbePmaReaderNext(PmaReader * pReadr)
 		}
 	}
 
-	if (rc == 0) {
+	if (rc == 0)
 		rc = vdbePmaReadVarint(pReadr, &nRec);
-	}
 	if (rc == 0) {
 		pReadr->nKey = (int)nRec;
 		rc = vdbePmaReadBlob(pReadr, (int)nRec, &pReadr->aKey);
@@ -786,9 +785,8 @@ vdbePmaReaderInit(SortSubtask * pTask,	/* Task context */
 		*pnByte += nByte;
 	}
 
-	if (rc == 0) {
+	if (rc == 0)
 		rc = vdbePmaReaderNext(pReadr);
-	}
 	return rc;
 }
 
@@ -1532,9 +1530,8 @@ vdbeSorterListToPMA(SortSubtask * pTask, SorterList * pList)
 	}
 
 	/* Sort the list */
-	if (rc == 0) {
+	if (rc == 0)
 		rc = vdbeSorterSort(pTask, pList);
-	}
 
 	if (rc == 0) {
 		SorterRecord *p;
@@ -1556,7 +1553,7 @@ vdbeSorterListToPMA(SortSubtask * pTask, SorterList * pList)
 	}
 
 	vdbeSorterWorkDebug(pTask, "exit");
-	assert(rc != 0 || pList->pList == 0);
+	assert(rc != 0 || pList->pList == NULL);
 	assert(rc != 0 || pTask->file.iEof == iSz);
 	return rc;
 }
@@ -1642,7 +1639,7 @@ vdbeMergeEngineStep(MergeEngine * pMerger,	/* The merge engine to advance to the
 		*pbEof = (pMerger->aReadr[pMerger->aTree[1]].pFd == 0);
 	}
 
-	return (rc == 0 ? pTask->pUnpacked->errCode : rc);
+	return rc == 0 ? pTask->pUnpacked->errCode : rc;
 }
 
 #if SQL_MAX_WORKER_THREADS>0
@@ -1697,7 +1694,7 @@ vdbeSorterFlushPMA(VdbeSorter * pSorter)
 		if (pTask->bDone) {
 			rc = vdbeSorterJoinThread(pTask);
 		}
-		if (rc != 0 || pTask->pThread == 0)
+		if (rc != 0 || pTask->pThread == NULL)
 			break;
 	}
 
@@ -1801,7 +1798,7 @@ sqlVdbeSorterWrite(const VdbeCursor * pCsr,	/* Sorter cursor */
 			rc = vdbeSorterFlushPMA(pSorter);
 			pSorter->list.szPMA = 0;
 			pSorter->iMemory = 0;
-			assert(rc != 0 || pSorter->list.pList == 0);
+			assert(rc != 0 || pSorter->list.pList == NULL);
 		}
 	}
 
@@ -2627,9 +2624,8 @@ vdbeSorterSetupMerge(VdbeSorter * pSorter)
 		}
 	}
 
-	if (rc != 0) {
+	if (rc != 0)
 		vdbeMergeEngineFree(pMain);
-	}
 	return rc;
 }
 
diff --git a/src/box/sql/where.c b/src/box/sql/where.c
index 4d1759e53..c3a2cc623 100644
--- a/src/box/sql/where.c
+++ b/src/box/sql/where.c
@@ -1206,7 +1206,7 @@ whereRangeSkipScanEst(Parse * pParse,		/* Parsing & code generating context */
 					       type, &p1);
 		nLower = 0;
 	}
-	if (pUpper && rc == 0) {
+	if (pUpper != NULL && rc == 0) {
 		rc = sqlStat4ValueFromExpr(pParse, pUpper->pExpr->pRight,
 					       type, &p2);
 		nUpper = p2 ? 0 : index->def->opts.stat->sample_count;
@@ -1220,12 +1220,12 @@ whereRangeSkipScanEst(Parse * pParse,		/* Parsing & code generating context */
 		for (i = 0; rc == 0 && i < (int) sample_count; i++) {
 			rc = sql_stat4_column(db, samples[i].sample_key, nEq,
 					      &pVal);
-			if (rc == 0 && p1) {
+			if (rc == 0 && p1 != NULL) {
 				int res = sqlMemCompare(p1, pVal, coll);
 				if (res >= 0)
 					nLower++;
 			}
-			if (rc == 0 && p2) {
+			if (rc == 0 && p2 != NULL) {
 				int res = sqlMemCompare(p2, pVal, coll);
 				if (res >= 0)
 					nUpper++;
@@ -1399,7 +1399,7 @@ whereRangeScanEst(Parse * pParse,	/* Parsing & code generating context */
 				rc = sqlStat4ProbeSetValue(pParse, p, &pRec,
 							       pExpr, nBtm, nEq,
 							       &n);
-				if (rc == 0 && n) {
+				if (rc == 0 && n != 0) {
 					tRowcnt iNew;
 					u16 mask = WO_GT | WO_LE;
 					if (sqlExprVectorSize(pExpr) > n)
@@ -1425,7 +1425,7 @@ whereRangeScanEst(Parse * pParse,	/* Parsing & code generating context */
 				rc = sqlStat4ProbeSetValue(pParse, p, &pRec,
 							       pExpr, nTop, nEq,
 							       &n);
-				if (rc == 0 && n) {
+				if (rc == 0 && n != 0) {
 					tRowcnt iNew;
 					u16 mask = WO_GT | WO_LE;
 					if (sqlExprVectorSize(pExpr) > n)
@@ -2370,7 +2370,7 @@ whereLoopAddBtreeIndex(WhereLoopBuilder * pBuilder,	/* The WhereLoop factory */
 	pNew->rSetup = 0;
 	rSize = index_field_tuple_est(probe, 0);
 	rLogSize = estLog(rSize);
-	for (; rc == 0 && pTerm != 0; pTerm = whereScanNext(&scan)) {
+	for (; rc == 0 && pTerm != NULL; pTerm = whereScanNext(&scan)) {
 		u16 eOp = pTerm->eOperator;	/* Shorthand for pTerm->eOperator */
 		LogEst rCostIdx;
 		LogEst nOutUnadjusted;	/* nOut before IN() and WHERE adjustments */
@@ -3115,9 +3115,8 @@ whereLoopAddAll(WhereLoopBuilder * pBuilder)
 		{
 			rc = whereLoopAddBtree(pBuilder, mPrereq);
 		}
-		if (rc == 0) {
+		if (rc == 0)
 			rc = whereLoopAddOr(pBuilder, mPrereq, mUnusable);
-		}
 		mPrior |= pNew->maskSelf;
 		if (rc || db->mallocFailed)
 			break;




More information about the Tarantool-patches mailing list