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