[tarantool-patches] [PATCH v1 0/4] sql: store regular identifiers in case-normal form

Kirill Shcherbatov kshcherbatov at tarantool.org
Fri Feb 15 16:30:47 MSK 2019


Perform SQL name normalization: cast name to the upper-case
(via Unicode Character Folding). Casing is locale-dependent
and context-sensitive. The result may be longer or shorter
than the original. For example, ß is converted to SS.
The result is similar to SQL UPPER function.

Performed extensive code refactoring to pass parser instance in
routines that use sql_normalize_name function. This makes
possible to raise an error in case of normalizing failure.

Branch: http://github.com/tarantool/tarantool/tree/kshch/gh-3991-fix-names-normalization
Issue: https://github.com/tarantool/tarantool/issues/3991

Kirill Shcherbatov (4):
  sql: patch sql_name_from_token to use Parser
  sql: patch sql_trigger_step_allocate to use Parser
  sql: patch sql_expr_create routine to use Parser
  sql: store regular identifiers in case-normal form

 src/box/lua/lua_sql.c                 |  11 +-
 src/box/sql/alter.c                   |   2 +-
 src/box/sql/analyze.c                 |   2 +-
 src/box/sql/build.c                   | 212 +++++++++------------
 src/box/sql/delete.c                  |   2 +-
 src/box/sql/expr.c                    | 256 ++++++++++++--------------
 src/box/sql/fkey.c                    | 128 +++++++------
 src/box/sql/parse.y                   |  60 +++---
 src/box/sql/pragma.c                  |  11 +-
 src/box/sql/resolve.c                 |  41 ++---
 src/box/sql/select.c                  |  70 ++++---
 src/box/sql/sqlInt.h                  | 255 +++++++++++++++++++++++--
 src/box/sql/trigger.c                 | 201 +++++++++-----------
 src/box/sql/util.c                    |  42 +++--
 src/box/sql/wherecode.c               |   3 +-
 src/box/sql/whereexpr.c               |  10 +-
 test/sql-tap/identifier_case.test.lua |  12 +-
 17 files changed, 753 insertions(+), 565 deletions(-)

-- 
2.20.1





More information about the Tarantool-patches mailing list