[Tarantool-patches] [PATCH v5 2/5] sql: remove PRAGMA "short_column_names"
Mergen Imeev
imeevma at tarantool.org
Sun Dec 29 15:58:25 MSK 2019
Hi! Thank you for remarks. My answers below.
On Fri, Dec 27, 2019 at 06:55:22PM +0200, Nikita Pettik wrote:
> On 27 Dec 14:18, imeevma at tarantool.org wrote:
> > The pragmas "short_column_names" and "full_column_names" allow us
> > to use three ways to display the column name in metadata:
> > 1) If both are turned off, then the column name was shown as it
> > was written by the user.
> > 2) If "short_column_names" = OFF and "full_column_names" = ON,
> > then the column name is displayed as <table name>.<column name>.
> > 3) If "short_column_names" = ON, then the column name is displayed
> > as <column name>. This is the default option.
>
> Don't get the difference between first and last options. Also see
> https://www.sqlite.org/pragma.html#pragma_full_column_names
>
Here you can see behaiour in the first case:
tarantool> CREATE TABLE t(i INT PRIMARY KEY);
---
- row_count: 1
...
tarantool> SELECT t . i from t;
---
- metadata:
- name: t . i
type: integer
rows: []
...
As we can see, the name is "t . i". In the third
case:
tarantool> SELECT t . i from t;
---
- metadata:
- name: I
type: integer
rows: []
...
> > But we need only two ways to show the column name:
> > 1) Show the column name as <column name>. This should be the
> > default option.
> > 2) Show the column name as <table name>.<column name>.
> >
> > In this regard, we need only one of these pragmas.
> >
> > @@ -1827,12 +1824,11 @@ generate_column_metadata(struct Parse *pParse, struct SrcList *pTabList,
> > assert(iCol >= 0 && iCol < (int)space_def->field_count);
> > zCol = space_def->fields[iCol].name;
> > const char *name = NULL;
> > +
> >
>
> Extra new line. Please, remove.
>
Fixed.
> > if (pEList->a[i].zName != NULL) {
> > name = pEList->a[i].zName;
> > } else {
> > - if (!shortNames && !fullNames) {
> > - name = pEList->a[i].zSpan;
> > - } else if (fullNames) {
> > + if (pParse->sql_flags & SQL_FullColNames) {
>
> (pParse->sql_flags & SQL_FullColNames) != 0
>
Fixed.
> > name = tt_sprintf("%s.%s",
> > space_def->name,
> > zCol);
> > @@ -2053,8 +2049,7 @@ sqlResultSetOfSelect(Parse * pParse, Select * pSelect)
> > sql *db = pParse->db;
> >
> > uint32_t saved_flags = pParse->sql_flags;
> > - pParse->sql_flags |= ~SQL_FullColNames;
> > - pParse->sql_flags &= SQL_ShortColNames;
> > + pParse->sql_flags = 0;
>
> Why do you set sql_flags to zero?
>
After "pParse->sql_flags &= SQL_ShortColNames;" all but
one(SQL_ShortColNames) bits will be 0. Since we remove
SQL_ShortColNames, all bits will be 0.
> > sqlSelectPrep(pParse, pSelect, 0);
> > if (pParse->is_aborted)
> > return NULL;
>
> I comment your patch since I've faced the same necessity to remove
> short_column_names. So to avoid doubling work, I'am going to cherry-
> pick your patch (or push it to the master out of order).
>
More information about the Tarantool-patches
mailing list