From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org> To: Roman Khabibov <roman.habibov@tarantool.org>, tarantool-patches@freelists.org Subject: [tarantool-patches] Re: [PATCH 2/2] sql: allow <COLLATE> only for string-like args Date: Sun, 12 May 2019 19:32:52 +0300 [thread overview] Message-ID: <1abf945a-736f-735a-98c5-a85db184ddb5@tarantool.org> (raw) In-Reply-To: <015351a65570062bdd3577b7222f047f7de7e89b.1557312975.git.roman.habibov@tarantool.org> Sorry, the patch does not work: tarantool> box.execute('SELECT NOT TRUE COLLATE "unicode"') --- - metadata: - name: NOT TRUE COLLATE "unicode" type: boolean rows: - [false] ... Obviously, 'NOT TRUE' is not a string. Strange, but without 'NOT' everything is fine: tarantool> box.execute('SELECT TRUE COLLATE "unicode"') --- - error: COLLATE can't be used with non-string arguments ... Please, fix. > diff --git a/src/box/sql/expr.c b/src/box/sql/expr.c > index ba7eea59d..29e3386fa 100644 > --- a/src/box/sql/expr.c > +++ b/src/box/sql/expr.c > @@ -4215,6 +4215,22 @@ sqlExprCodeTarget(Parse * pParse, Expr * pExpr, int target) > } > case TK_SPAN: > case TK_COLLATE:{ > + enum field_type type; > + struct Expr *left = pExpr->pLeft; > + if (left->op == TK_COLUMN) { > + int col_num = left->iColumn; > + type = left->space_def->fields[col_num].type; > + } else > + type = left->type; > + if (left->op != TK_CONCAT && Why do you check for TK_CONCAT? Its type should be FIELD_TYPE_STRING. > + type != FIELD_TYPE_STRING && > + type != FIELD_TYPE_SCALAR) { > + diag_set(ClientError, ER_SQL_PARSER_GENERIC, > + "COLLATE can't be used with " > + "non-string arguments"); > + pParse->is_aborted = true; > + break; > + } > return sqlExprCodeTarget(pParse, pExpr->pLeft, > target); > }
next prev parent reply other threads:[~2019-05-12 16:32 UTC|newest] Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-05-08 11:29 [tarantool-patches] [PATCH 0/2] " Roman Khabibov 2019-05-08 11:29 ` [tarantool-patches] [PATCH 1/2] sql: fix collation node duplication in AST Roman Khabibov 2019-05-12 16:32 ` [tarantool-patches] " Vladislav Shpilevoy 2019-05-28 14:10 ` Roman Khabibov 2019-06-02 17:09 ` Vladislav Shpilevoy 2019-06-04 14:00 ` Roman Khabibov 2019-05-08 11:29 ` [tarantool-patches] [PATCH 2/2] sql: allow <COLLATE> only for string-like args Roman Khabibov 2019-05-12 16:32 ` Vladislav Shpilevoy [this message] 2019-05-28 14:08 ` [tarantool-patches] " Roman Khabibov 2019-06-02 17:09 ` Vladislav Shpilevoy 2019-06-04 14:27 ` Roman Khabibov 2019-06-04 19:49 ` Vladislav Shpilevoy 2019-06-07 15:01 ` Roman Khabibov 2019-06-09 16:55 ` Vladislav Shpilevoy
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1abf945a-736f-735a-98c5-a85db184ddb5@tarantool.org \ --to=v.shpilevoy@tarantool.org \ --cc=roman.habibov@tarantool.org \ --cc=tarantool-patches@freelists.org \ --subject='[tarantool-patches] Re: [PATCH 2/2] sql: allow <COLLATE> only for string-like args' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox