Changeset: 553666ddd986 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/553666ddd986 Added Files: sql/test/escape-sequences/Tests/join.test Modified Files: sql/server/sql_parser.y sql/server/sql_scan.c sql/test/escape-sequences/Tests/All sql/test/escape-sequences/Tests/scalar-functions.test Branch: escape-sequences Log Message:
outer join escape diffs (86 lines): diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y --- a/sql/server/sql_parser.y +++ b/sql/server/sql_parser.y @@ -773,6 +773,7 @@ SQLCODE SQLERROR UNDER WHENEVER ODBC_TIMESTAMP_ESCAPE_PREFIX ODBC_GUID_ESCAPE_PREFIX ODBC_FUNC_ESCAPE_PREFIX + ODBC_OJ_ESCAPE_PREFIX /* odbc symbolic types */ %type <sym> @@ -3258,7 +3259,15 @@ joined_table: append_symbol(l, $5); append_symbol(l, NULL); $$ = _symbol_create_list( SQL_JOIN, l); } - ; + | '{' ODBC_OJ_ESCAPE_PREFIX table_ref outer_join_type OUTER JOIN table_ref join_spec '}' + { dlist *l = L(); + append_symbol(l, $3); + append_int(l, 0); + append_int(l, $4 + 1); + append_symbol(l, $7); + append_symbol(l, $8); + $$ = _symbol_create_list( SQL_JOIN, l); } + ; join_type: /* empty */ { $$ = 0; } @@ -5647,12 +5656,13 @@ non_reserved_word: | URI { $$ = sa_strdup(SA, "uri"); } | WHITESPACE { $$ = sa_strdup(SA, "whitespace"); } -/* escape sequence non reserved words */ +/* odbc escape sequence non reserved words */ | ODBC_DATE_ESCAPE_PREFIX { $$ = sa_strdup(SA, "d"); } | ODBC_TIME_ESCAPE_PREFIX { $$ = sa_strdup(SA, "t"); } | ODBC_TIMESTAMP_ESCAPE_PREFIX { $$ = sa_strdup(SA, "ts"); } | ODBC_GUID_ESCAPE_PREFIX { $$ = sa_strdup(SA, "guid"); } | ODBC_FUNC_ESCAPE_PREFIX { $$ = sa_strdup(SA, "fn"); } +| ODBC_OJ_ESCAPE_PREFIX { $$ = sa_strdup(SA, "oj"); } ; lngval: diff --git a/sql/server/sql_scan.c b/sql/server/sql_scan.c --- a/sql/server/sql_scan.c +++ b/sql/server/sql_scan.c @@ -526,6 +526,7 @@ scanner_init_keywords(void) failed += keywords_insert("ts", ODBC_TIMESTAMP_ESCAPE_PREFIX); failed += keywords_insert("guid", ODBC_GUID_ESCAPE_PREFIX); failed += keywords_insert("fn", ODBC_FUNC_ESCAPE_PREFIX); + failed += keywords_insert("oj", ODBC_OJ_ESCAPE_PREFIX); failed += keywords_insert("SQL_BIGINT", SQL_BIGINT); failed += keywords_insert("SQL_BINARY", SQL_BINARY); failed += keywords_insert("SQL_BIT", SQL_BIT); diff --git a/sql/test/escape-sequences/Tests/All b/sql/test/escape-sequences/Tests/All --- a/sql/test/escape-sequences/Tests/All +++ b/sql/test/escape-sequences/Tests/All @@ -2,3 +2,4 @@ literals like-sequences call-procedures scalar-functions +join diff --git a/sql/test/escape-sequences/Tests/join.test b/sql/test/escape-sequences/Tests/join.test new file mode 100644 --- /dev/null +++ b/sql/test/escape-sequences/Tests/join.test @@ -0,0 +1,8 @@ +query II rowsort +select * +from { oj (select 1 as a) as t1 +left outer join (select 1 as a) as t2 +on t1.a=t2.a } +---- +1 +1 diff --git a/sql/test/escape-sequences/Tests/scalar-functions.test b/sql/test/escape-sequences/Tests/scalar-functions.test --- a/sql/test/escape-sequences/Tests/scalar-functions.test +++ b/sql/test/escape-sequences/Tests/scalar-functions.test @@ -8,6 +8,7 @@ select length((select { fn database() }) ---- 1 +# this function maps 1:1 query I rowsort select { fn abs(-3) } ---- _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org