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 -- [email protected]
To unsubscribe send an email to [email protected]