Changeset: 603a03f6387c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=603a03f6387c
Modified Files:
        sql/server/sql_parser.h
        sql/server/sql_parser.y
        sql/server/sql_scan.c
Branch: graph0
Log Message:

Added the keyword REACHES to the SQL grammar. It should now recognise the 
expression col1 REACHES col2, not really meaningful atm.


diffs (79 lines):

diff --git a/sql/server/sql_parser.h b/sql/server/sql_parser.h
--- a/sql/server/sql_parser.h
+++ b/sql/server/sql_parser.h
@@ -172,7 +172,8 @@ typedef enum tokens {
        SQL_XMLQUERY,
        SQL_XMLTEXT,
        SQL_XMLVALIDATE,
-       SQL_XMLNAMESPACES
+       SQL_XMLNAMESPACES,
+       SQL_GRAPH_REACHES,
 } tokens;
 
 typedef enum jt {
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
@@ -296,6 +296,7 @@ int yydebug=1;
        XML_value_expression
        XML_primary
        opt_comma_string_value_expression
+       graph_reaches_exp
 
 %type <type>
        data_type
@@ -553,6 +554,8 @@ int yydebug=1;
 %token XMLVALIDATE RETURNING LOCATION ID ACCORDING XMLSCHEMA URI XMLAGG
 %token FILTER
 
+/* GRAPH tokens */
+%token REACHES
 
 /* operators */
 %left UNION EXCEPT INTERSECT CORRESPONDING UNIONJOIN
@@ -3321,6 +3324,7 @@ pred_exp:
                  else
                        $$ = _symbol_create_symbol(SQL_NOT, $2); }
  |   predicate { $$ = $1; }
+ |   graph_reaches_exp /* Disable NOT */
  ;
 
 comparison_predicate:
@@ -3736,6 +3740,16 @@ param:
          $$ = _symbol_create_int( SQL_PARAMETER, nr ); 
        }
 
+
+graph_reaches_exp:
+       column_ref REACHES column_ref
+               {
+                       dlist *l = L();
+                       append_list(l, $1);
+                       append_list(l, $3);
+                       $$ = _symbol_create_list(SQL_GRAPH_REACHES, l);
+               }
+
 /*
 <window function> ::= <window function type> OVER <window name or 
specification>
 
@@ -5199,6 +5213,7 @@ non_reserved_word:
 |  MINMAX      { $$ = sa_strdup(SA, "MinMax"); }
 |  STORAGE     { $$ = sa_strdup(SA, "storage"); }
 |  GEOMETRY    { $$ = sa_strdup(SA, "geometry"); }
+|  REACHES  { $$ = sa_strdup(SA, "reaches"); }
 ;
 
 name_commalist:
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
@@ -468,6 +468,9 @@ scanner_init_keywords(void)
        keywords_insert("MULTILINESTRINGZM", GEOMETRYSUBTYPE);
        keywords_insert("MULTIPOLYGONZM", GEOMETRYSUBTYPE);
        keywords_insert("GEOMETRYCOLLECTIONZM", GEOMETRYSUBTYPE);
+
+       // Graph-related keywords
+       keywords_insert("REACHES", REACHES);
 }
 
 #define find_keyword_bs(lc, s) find_keyword(lc->rs->buf+lc->rs->pos+s)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to