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

Kirill Shcherbatov kshcherbatov at tarantool.org
Wed Feb 27 14:13:11 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.

Changes in version 2:
	- Setup parser error externally

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

Kirill Shcherbatov (7):
  sql: refactor sql_alloc_src_list to set diag
  sql: rework sql_src_list_enlarge to set diag
  sql: refactor sql_src_list_append to set diag
  sql: refactor sql_name_from_token to set diag
  sql: refactor sql_trigger_step_allocate to set diag
  sql: refactor sql_expr_create to set diag
  sql: store regular identifiers in case-normal form

 src/box/lua/lua_sql.c                 |  11 +-
 src/box/sql/alter.c                   |   8 +-
 src/box/sql/analyze.c                 |  47 +--
 src/box/sql/build.c                   | 517 +++++++++++++-------------
 src/box/sql/delete.c                  |  14 +-
 src/box/sql/expr.c                    | 300 +++++++--------
 src/box/sql/fk_constraint.c           | 202 ++++++----
 src/box/sql/parse.y                   | 130 +++++--
 src/box/sql/pragma.c                  |  24 +-
 src/box/sql/resolve.c                 |  47 ++-
 src/box/sql/select.c                  | 146 +++++---
 src/box/sql/sqlInt.h                  | 301 ++++++++++++++-
 src/box/sql/trigger.c                 | 210 +++++------
 src/box/sql/util.c                    |  42 ++-
 src/box/sql/wherecode.c               |   9 +-
 src/box/sql/whereexpr.c               |  22 +-
 test/sql-tap/identifier_case.test.lua |  12 +-
 17 files changed, 1240 insertions(+), 802 deletions(-)

-- 
2.20.1





More information about the Tarantool-patches mailing list