[tarantool-patches] [PATCH 1/2] sql: fix collation node duplication in AST

Roman Khabibov roman.habibov at tarantool.org
Wed May 8 14:29:15 MSK 2019


Before this patch, if SELECT was used with compound query, COLLATION
clauses and ORDER BY clause, C function resolveAlias built extra node
with collation name into OrderBy's AST.
E.g., for query:

SELECT a COLLATE "unicode_ci" FROM t2 EXCEPT SELECT a FROM t3 ORDER BY 1

was appeared something like: "unicode_ci"
			     /	       \
       extra node -> "unicode_ci"     NULL
		     /	        \
		   "A"		NULL
		   / \
		NULL NULL

Needed for #3804
---
 src/box/sql/resolve.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/box/sql/resolve.c b/src/box/sql/resolve.c
index 504096e6d..c2c597dc0 100644
--- a/src/box/sql/resolve.c
+++ b/src/box/sql/resolve.c
@@ -109,7 +109,7 @@ resolveAlias(Parse * pParse,	/* Parsing context */
 		return;
 	if (zType[0] != 'G')
 		incrAggFunctionDepth(pDup, nSubquery);
-	if (pExpr->op == TK_COLLATE) {
+	if (pExpr->op == TK_COLLATE && pDup->op != TK_COLLATE) {
 		pDup =
 		    sqlExprAddCollateString(pParse, pDup, pExpr->u.zToken);
 	}
-- 
2.20.1 (Apple Git-117)





More information about the Tarantool-patches mailing list