From 246f854b995d5a1756d04f94f77e62e6a4b094d4 Mon Sep 17 00:00:00 2001 From: Patrick Reynolds Date: Wed, 2 Jun 2021 10:34:35 -0400 Subject: [PATCH] Add backticks around table names in `mdb-query` output (#307) * Add [brackets] around mdb-query table names * Allow column and table names to be in brackets Column and table names can have whitespace in them. The traditional way to indicate that is with bracket characters, like so: ```sql SELECT [column name] FROM [table name] ``` This change updates the parser to allow bracket format -- similar to double-quoted format -- in all NAME contexts, i.e., column names, table names, and database names. Co-authored-by: Patrick Reynolds --- src/sql/lexer.l | 2 ++ src/util/mdb-queries.c | 6 ++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/sql/lexer.l b/src/sql/lexer.l index 9f91d3b..c83bc2b 100644 --- a/src/sql/lexer.l +++ b/src/sql/lexer.l @@ -98,6 +98,8 @@ strptime { return STRPTIME; } return IDENT; } +\[[^\]]+\] { yylval->name = g_strndup(yytext+1, yyleng-2); return NAME; } + [a-z\xa0-\xff][a-z0-9_#@\xa0-\xff]* { yylval->name = g_strdup(yytext); return NAME; } '[^']*'' { diff --git a/src/util/mdb-queries.c b/src/util/mdb-queries.c index 248a844..9fe839c 100644 --- a/src/util/mdb-queries.c +++ b/src/util/mdb-queries.c @@ -182,12 +182,10 @@ int main (int argc, char **argv) { } break; case 5: // table name - if(strcmp(sql_tables,"") == 0) { - strcpy(sql_tables,name1); - } else { + if(strcmp(sql_tables,"") != 0) { strcat(sql_tables,","); - strcat(sql_tables,name1); } + sprintf(sql_tables+strlen(sql_tables),"[%s]",name1); break; case 6: // column name if(strcmp(sql_columns,"") == 0) {