[tarantool-patches] Re: [PATCH v4 7/8] sql: rework semantic errors

Mergen Imeev imeevma at tarantool.org
Tue Mar 26 22:20:21 MSK 2019


On Tue, Mar 26, 2019 at 09:16:08PM +0300, n.pettik wrote:
> 
> > #if SQL_MAX_COLUMN
> > 	if (pOrderBy->nExpr > db->aLimit[SQL_LIMIT_COLUMN]) {
> > -		const char *err_msg =
> > -			is_order_by ? "The number of terms in ORDER BY clause" :
> > -				      "The number of terms in GROUP BY clause";
> > +		const char *err_msg;
> > +		if (zType[0] != 'G')
> > +			err_msg = "The number of terms in ORDER BY clause";
> > +		else
> > +			err_msg = "The number of terms in GROUP BY clause”;
> 
> Just use format string and sprintf - it allows to remove branching
> (like it was in original SQLite code).
> 
Fixed:

diff --git a/src/box/sql/resolve.c b/src/box/sql/resolve.c
index 30a6b5f..747e4c4 100644
--- a/src/box/sql/resolve.c
+++ b/src/box/sql/resolve.c
@@ -1055,12 +1055,9 @@ sqlResolveOrderGroupBy(Parse * pParse,	/* Parsing context.  Leave error messages
 		return 0;
 #if SQL_MAX_COLUMN
 	if (pOrderBy->nExpr > db->aLimit[SQL_LIMIT_COLUMN]) {
-		const char *err_msg;
-		if (zType[0] != 'G')
-			err_msg = "The number of terms in ORDER BY clause";
-		else
-			err_msg = "The number of terms in GROUP BY clause";
-		diag_set(ClientError, ER_SQL_PARSER_LIMIT, err_msg,
+		const char *err = tt_sprintf("The number of terms in %s BY "\
+					     "clause", zType);
+		diag_set(ClientError, ER_SQL_PARSER_LIMIT, err,
 			 pOrderBy->nExpr, db->aLimit[SQL_LIMIT_COLUMN]);
 		pParse->is_aborted = true;
 		return 1;





More information about the Tarantool-patches mailing list