sql: introduce syntax for MAP values
This patch introduces a new syntax that allows to create MAP values in an SQL query. Part of #4763 @TarantoolBot document Title: Syntax for MAP in SQL The syntax for creating document values is now available in SQL. You can use `{`, `:` and `}` to create a MAP value. Only INTEGER, STRING, and UUID values can be keys in a MAP value. If there are two or more values for the same key, the last one will be used for that key. Examples: ``` tarantool> box.execute("SELECT {1 : 'a', 'asd' : 1.5, uuid() : true};") --- - metadata: - name: COLUMN_1 type: map rows: - [{1: 'a', 91ca4dbb-c6d4-4468-b4a4-ab1e409dd87e: true, 'asd': 1.5}] ... ``` ``` tarantool> box.execute("SELECT {'h' : ['abc', 321], 7 : {'b' : 1.5}};") --- - metadata: - name: COLUMN_1 type: map rows: - [{7: {'b': 1.5}, 'h': ['abc', 321]}] ... ```
Showing
- changelogs/unreleased/gh-4763-introduce-map-to-sql.md 4 additions, 0 deletionschangelogs/unreleased/gh-4763-introduce-map-to-sql.md
- src/box/sql/expr.c 49 additions, 0 deletionssrc/box/sql/expr.c
- src/box/sql/mem.c 39 additions, 0 deletionssrc/box/sql/mem.c
- src/box/sql/mem.h 16 additions, 0 deletionssrc/box/sql/mem.h
- src/box/sql/parse.y 35 additions, 2 deletionssrc/box/sql/parse.y
- src/box/sql/tokenize.c 18 additions, 3 deletionssrc/box/sql/tokenize.c
- src/box/sql/vdbe.c 21 additions, 0 deletionssrc/box/sql/vdbe.c
- test/sql-luatest/map_test.lua 352 additions, 0 deletionstest/sql-luatest/map_test.lua
Loading