Tarantool development patches archive
 help / color / mirror / Atom feed
From: Peter Gulutzan <pgulutzan@ocelot.ca>
To: tarantool-patches@dev.tarantool.org
Subject: [Tarantool-patches]  [PATCH 0/4] session settings fixes
Date: Fri, 3 Apr 2020 11:09:21 -0600	[thread overview]
Message-ID: <8dc7be67-fc78-dd42-0634-83692259f0a5@ocelot.ca> (raw)

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';
I claim that is just as "user friendly" -- it
adds two words, but it removes quotation marks.
And it does not require that users learn new syntax
because UPDATE ... SET is well known.

Notice that I can already do this -- almost.
This is legal:
CREATE VIEW _SETTINGS_DEFAULT_ENGINE AS
     SELECT "value" AS value
     FROM "_session_settings"
     WHERE "name" = 'sql_default_engine';
The flaw is that views are not updatable.
But I don't regard that as a big problem
because this is not a proposal to make
all views updatable. It only requires:
when you see that exact UPDATE statement,
transform it to box.session._settings:update.
And similarly for sql_defer_foreign_keys etc.

Alternatively, users could create a Lua function
X which updates
_session_settings, vaguely like this
box.schema.func.create('X',
     {language = 'LUA',
      returns = 'string',
      body = [[function ()
box.space._session_settings:update('sql_default_engine', {{'=', 2, 
'memtx'}});
               return 'memtx changed'
               end]],
      is_sandboxed = false,
      exports = {'LUA', 'SQL'},
      is_deterministic = true})
then allow this SQL syntax:
CALL X();
Again, I claim that this is just as "user friendly"
because -- as far as I can tell -- some people think
saving keystrokes is the same as being friendly.
Nikita Pettik explained that issue#4711 is for a shortcut
and that is short.
Eventually we will probably want to support CALL anyway,
and it is already a reserved word.

Thus there are "user-friendly" alternatives that do not
require new proprietary syntax.

Peter Gulutzan

             reply	other threads:[~2020-04-03 17:09 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-03 17:09 Peter Gulutzan [this message]
2020-04-03 18:11 ` Timur Safin
2020-04-07 16:32 ` Chris Sosnin
2020-04-08  9:40   ` Timur Safin
2020-04-08 15:03     ` Peter Gulutzan
2020-04-08 14:36   ` Peter Gulutzan
  -- strict thread matches above, loose matches on Subject: below --
2020-03-30  9:13 Chris Sosnin
2020-04-02  9:14 ` Timur Safin
2020-04-02 10:18   ` Chris Sosnin
2020-04-03 12:47   ` Nikita Pettik
2020-04-03 13:09 ` Nikita Pettik
2020-04-03 14:02   ` Chris Sosnin
2020-04-13 14:18 ` Kirill Yukhin

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=8dc7be67-fc78-dd42-0634-83692259f0a5@ocelot.ca \
    --to=pgulutzan@ocelot.ca \
    --cc=tarantool-patches@dev.tarantool.org \
    --subject='Re: [Tarantool-patches]  [PATCH 0/4] session settings fixes' \
    /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