[Tarantool-patches] [PATCH 0/4] session settings fixes
Peter Gulutzan
pgulutzan at ocelot.ca
Wed Apr 8 17:36:03 MSK 2020
Hi,
On 2020-04-07 10:32 a.m., Chris Sosnin wrote:
> Hi!
>
>> On 3 Apr 2020, at 20:09, Peter Gulutzan <pgulutzan at ocelot.ca> wrote:
>>
>> Hi,
>>
>> Re:
>> SETTING SET "sql_default_engine" = 'memtx';
>>
>> Adding a new reserved word SETTING, without advance notice,
>> should be against policy. It causes a slight risk
>> of breaking an existing application.
>>
>> I had hoped for
>> UPDATE _SETTINGS_DEFAULT_ENGINE SET VALUE = 'memtx';
>
> Implementing this syntax would either require creating a table for
each setting
> or adding new keywords, since this is the same as updating tables.
>
It would definitely require creating a (viewed) table for each setting.
That is why I said "And similarly for sql_defer_foreign_keys etc."
> Moreover, SET VALUE construction also is not supported, so we still need
> to reserve a new word.
>
As I pointed out in my earlier email, I can say
UPDATE _settings_default_engine SET value = 'memtx';
now, in a current Tarantool version, without a parser error.
If _settings_default_engine is not a view, it works fine.
So I didn't see why there is a need to reserve VALUE.
(Digression: That does not mean I like using VALUE for a
column name. I objected about it in an earlier email.
But I did not propose a better name, and now it is too late.)
> We can borrow another MySQL syntax — SET SESSION name = value
> What do you think about this option?
In MySQL, SESSION is not a reserved word.
Let us go back to my original complaint.
CREATE TABLE setting (setting INTEGER PRIMARY KEY);
That statement is legal in Tarantool-2.4.
That statement is illegal in branch ksosnin/gh-4712-session-settings-v2.
If you say SET SESSION instead of SETTING SET,
is there still a need to add a new reserved word without notice?
(Digression: Currently, every word that can be the start of a statement
is reserved. Also, a few words that might in future be the start of a
statement are reserved -- ANALYZE, BEGIN, CALL, DECLARE, END, FETCH, FOR,
GRANT, IF, ITERATE, LEAVE, LOOP, RENAME, REPEAT, RESIGNAL, REVOKE, SET,
SIGNAL. I believe that is a good thing. I do not believe that
SETTING should be unreserved if it is the start of a statement.)
Peter Gulutzan
More information about the Tarantool-patches
mailing list