From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org> To: Kirill Shcherbatov <kshcherbatov@tarantool.org>, tarantool-patches@freelists.org Subject: [tarantool-patches] Re: [PATCH v1 0/4] sql: store regular identifiers in case-normal form Date: Fri, 22 Feb 2019 15:43:42 +0300 [thread overview] Message-ID: <546dab2d-9905-128c-8228-b0d7bc4168f7@tarantool.org> (raw) In-Reply-To: <f2329866-7dcc-50d1-e98d-4c5b995b1a87@tarantool.org> On 22/02/2019 15:38, Kirill Shcherbatov wrote: >> Talking about the patchset - I do not understand a point of >> the first 3 patches. I see, that the only reason why you >> pass the parser is a wish to set nErr. Why instead not to just >> do diag_set, return -1, and check for that in all upper functions, >> until parser is already in one of them? This how all box functions >> work with SQL right now - they do not take Vdbe, nor Parse. They >> just set diag and return -1. > > The problem is that when the family of functions calling sql_normalize_name return NULL, > it is assumed that a memory allocation error has occurred, although this is not the case. Then stop this assumption. Set diag_set(OutOfMemory) inside this function. > The API for working with expressions is heterogeneous, and in some cases already accepts Parser - > for example sqlPExpr, sqlPExprAddSelect.> Moreover, in the same way, to set a third-party error it is used in sql Expr: see sqlExprCheckHeight > that set> sqlErrorMsg(pParse, "Expression tree is too large (maximum depth %d)", mxHeight); > Thus, I do not introduce new practices to the API, but on the contrary, bring it to a more consistent state. Again, you rolled back our progress of getting rid of nErr. You should not insert it deeper into the API. Please, do not. > > The alternative that you propose to use the forced setting SQL_TARANTOOL_ERROR (in some cases) three functions. sql_normalize_name always should mean tarantool error. Even on failed sqlite3StrDup you can set diag. > the stack if the function returned NULL and !db.mallocFailed. This will work, however, for the same sqlPExpr analogy > will be incorrect: it is not true that if the expression construction function returned NULL, a Tarantool error occurred. > > This will confuse the already conflicting SQL code. >
prev parent reply other threads:[~2019-02-22 12:43 UTC|newest] Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-02-15 13:30 [tarantool-patches] " Kirill Shcherbatov 2019-02-15 13:30 ` [tarantool-patches] [PATCH v1 1/4] sql: patch sql_name_from_token to use Parser Kirill Shcherbatov 2019-02-15 13:30 ` [tarantool-patches] [PATCH v1 2/4] sql: patch sql_trigger_step_allocate " Kirill Shcherbatov 2019-02-15 13:30 ` [tarantool-patches] [PATCH v1 3/4] sql: patch sql_expr_create routine " Kirill Shcherbatov 2019-02-15 13:30 ` [tarantool-patches] [PATCH v1 4/4] sql: store regular identifiers in case-normal form Kirill Shcherbatov 2019-02-22 12:20 ` [tarantool-patches] Re: [PATCH v1 0/4] " Vladislav Shpilevoy 2019-02-22 12:38 ` Kirill Shcherbatov 2019-02-22 12:43 ` Vladislav Shpilevoy [this message]
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=546dab2d-9905-128c-8228-b0d7bc4168f7@tarantool.org \ --to=v.shpilevoy@tarantool.org \ --cc=kshcherbatov@tarantool.org \ --cc=tarantool-patches@freelists.org \ --subject='[tarantool-patches] Re: [PATCH v1 0/4] sql: store regular identifiers in case-normal form' \ /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