[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