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

Reply via email to