yugabyte/yugabyte-db

[YCQL] Make it clear that transactions can't be enabled after table creation

Open

#1.048 geöffnet am 21. März 2019

Auf GitHub ansehen
 (3 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)C (1.003 Forks)batch import
area/ycqlhelp wantedkind/enhancementpriority/medium

Repository-Metriken

Stars
 (8.229 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 17T 21h) (92 gemergte PRs in 30 T)

Beschreibung

Jira Link: DB-4701

This is a YCQL issue. YSQL is not affected by this because all tables are transactional by default.

Right now, attempting to use ALTER TABLE to enable transactions given conflicting error messages complaining on the type only:

cqlsh> ALTER TABLE k.num WITH transactions.enabled = true;
SyntaxException: Invalid SQL Statement. syntax error, unexpected '.', expecting '='
ALTER TABLE k.num WITH transactions.enabled = true;
                                   ^
 (error -11)
cqlsh> ALTER TABLE k.num WITH transactions = '{"enabled": true}';
InvalidRequest: Error from server: code=2200 [Invalid query] message="Datatype Mismatch. Invalid value for option 'transactions'. Value must be a map
ALTER TABLE k.num WITH transactions = '{"enabled": true}';
                       ^^^^^^^^^^^^
 (error -201)"
cqlsh> ALTER TABLE k.num WITH transactions = {'enabled': true};
SyntaxException: Invalid SQL Statement. syntax error, unexpected '{'
ALTER TABLE k.num WITH transactions = {'enabled': true};
                                      ^
 (error -11)

So, error message asks user to use map value but complains about unexpected '{' if he does.

Proposal:

  • Any attempt to alter read-only property must report that clearly, e.g. cannot change read-only property
  • Transactions property being immutable should be explicitly mentioned in our docs

Contributor Guide