Update of /cvsroot/monetdb/pathfinder/compiler/core
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv14390/compiler/core
Modified Files:
Tag: M5XQ
fs.brg
Log Message:
propagated changes of Thursday Nov 05 2009 - Monday Nov 09 2009
from the development trunk to the M5XQ branch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2009/11/05 - singhan: compiler/core/fs.brg,1.79
XQuery full-text search support initial version!
This initial version provides support to
-ftcontains keyword,
e.g., for $f in doc("menu.xml")//food[./name ftcontains "Belgian Waffles"]
return $f
The above query will return all the food nodes that has some relevancy over
"Belgian Waffles"
-initial score variable support
e.g., for $f score $s in doc("menu.xml")//food[./name ftcontains "Belgian
Waffles"]
return $s
The above query will return the relevancy score of all the matched food
nodes, however since its an initial version, the support to this score variable
is very limited.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Index: fs.brg
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/core/fs.brg,v
retrieving revision 1.73.2.5
retrieving revision 1.73.2.6
diff -u -d -r1.73.2.5 -r1.73.2.6
--- fs.brg 19 Oct 2009 09:44:54 -0000 1.73.2.5
+++ fs.brg 9 Nov 2009 00:03:36 -0000 1.73.2.6
@@ -46,6 +46,7 @@
#include "abssyn.h"
#include "qname.h"
#include "mem.h"
+
#include "options.h" /* extract option declarations from parse tree */
#include "string_utils.h" /* trimming for pragmas */
@@ -220,6 +221,13 @@
%term seed = 128
%term xrpc = 129
%term docmgmt_ty = 130
+%term ftcontains = 131
+%term ftfilter = 132
+%term ftignore = 133
+%term ftor = 134
+%term ftand = 135
+%term ftmildnot = 136
+%term ftnot = 137
%%
@@ -355,7 +363,7 @@
OptPosVar),
OptExpr),
OptBindExpr) = 66 (10);
-
+
OptPosVar: nil = 68 (10);
OptPosVar: Var = 69 (10);
@@ -439,22 +447,22 @@
AndExpr: ComparisonExpr = 104 (10);
AndExpr: and (ComparisonExpr, AndExpr) = 105 (10);
-ComparisonExpr: RangeExpr = 106 (10);
-ComparisonExpr: eq (RangeExpr, RangeExpr) = 107 (10);
-ComparisonExpr: ne (RangeExpr, RangeExpr) = 108 (10);
-ComparisonExpr: lt (RangeExpr, RangeExpr) = 109 (10);
-ComparisonExpr: le (RangeExpr, RangeExpr) = 110 (10);
-ComparisonExpr: gt (RangeExpr, RangeExpr) = 111 (10);
-ComparisonExpr: ge (RangeExpr, RangeExpr) = 112 (10);
-ComparisonExpr: val_eq (RangeExpr, RangeExpr) = 113 (10);
-ComparisonExpr: val_ne (RangeExpr, RangeExpr) = 114 (10);
-ComparisonExpr: val_lt (RangeExpr, RangeExpr) = 115 (10);
-ComparisonExpr: val_le (RangeExpr, RangeExpr) = 116 (10);
-ComparisonExpr: val_gt (RangeExpr, RangeExpr) = 117 (10);
-ComparisonExpr: val_ge (RangeExpr, RangeExpr) = 118 (10);
-ComparisonExpr: is (RangeExpr, RangeExpr) = 119 (10);
-ComparisonExpr: ltlt (RangeExpr, RangeExpr) = 121 (10);
-ComparisonExpr: gtgt (RangeExpr, RangeExpr) = 122 (10);
+ComparisonExpr: FTContainsExpr = 106 (10);
+ComparisonExpr: eq (FTContainsExpr, FTContainsExpr) = 107 (10);
+ComparisonExpr: ne (FTContainsExpr, FTContainsExpr) = 108 (10);
+ComparisonExpr: lt (FTContainsExpr, FTContainsExpr) = 109 (10);
+ComparisonExpr: le (FTContainsExpr, FTContainsExpr) = 110 (10);
+ComparisonExpr: gt (FTContainsExpr, FTContainsExpr) = 111 (10);
+ComparisonExpr: ge (FTContainsExpr, FTContainsExpr) = 112 (10);
+ComparisonExpr: val_eq (FTContainsExpr, FTContainsExpr) = 113 (10);
+ComparisonExpr: val_ne (FTContainsExpr, FTContainsExpr) = 114 (10);
+ComparisonExpr: val_lt (FTContainsExpr, FTContainsExpr) = 115 (10);
+ComparisonExpr: val_le (FTContainsExpr, FTContainsExpr) = 116 (10);
+ComparisonExpr: val_gt (FTContainsExpr, FTContainsExpr) = 117 (10);
+ComparisonExpr: val_ge (FTContainsExpr, FTContainsExpr) = 118 (10);
+ComparisonExpr: is (FTContainsExpr, FTContainsExpr) = 119 (10);
+ComparisonExpr: ltlt (FTContainsExpr, FTContainsExpr) = 121 (10);
+ComparisonExpr: gtgt (FTContainsExpr, FTContainsExpr) = 122 (10);
RangeExpr: AdditiveExpr = 123 (10);
RangeExpr: range (RangeExpr, RangeExpr) = 124 (10);
@@ -634,6 +642,58 @@
/* Pathfinder extension: statement type for document management functions */
SequenceType: seq_ty (docmgmt_ty (nil)) = 238 (10);
+/* Pathfinder full-text support */
+FTContainsExpr: RangeExpr = 239 (10);
+FTContainsExpr: ftcontains (RangeExpr, FTSelectionExpr) = 240 (10);
+FTContainsExpr: ftcontains (RangeExpr, FTFilterExpr) = 241 (10);
+
+OptBindExpr: binds (bind (vars (vars (var_type (Var,
+ nil),
+ OptPosVar),
+ OptFTScoreVar),
+ OptExpr),
+ OptBindExpr) = 242 (10);
+OptBindExpr: binds (bind (vars (vars (var_type
+ (Var,
+ TypeDeclaration),
+ OptPosVar),
+ OptFTScoreVar),
+ OptExpr),
+ OptBindExpr) = 243 (10);
+
+OptFTScoreVar: nil = 244 (10);
+OptFTScoreVar: Var = 245 (10);
+
+FTFilterExpr: ftfilter (FTSelectionExpr,
+ FTIgnoreOption) = 246 (10);
+FTIgnoreOption: ftignore (UnionExpr) = 247 (10);
+
+FTSelectionExpr: FTOrExpr = 248 (10);
+
+FTOrExpr: FTAndExpr = 249 (10);
+FTOrExpr: ftor (FTOrExpr, FTAndExpr) = 250 (10);
+
+FTAndExpr: FTMildNot = 251 (10);
+FTAndExpr: ftand (FTAndExpr, FTMildNot) = 252 (10);
+
+FTMildNot: FTUnaryNot = 253 (10);
+FTMildNot: ftmildnot (FTMildNot, FTUnaryNot) = 254 (10);
+
+FTUnaryNot: FTPrimaryWithOptions = 255 (10);
+FTUnaryNot: ftnot (FTPrimaryWithOptions) = 256 (10);
+
+FTPrimaryWithOptions: FTPrimaryExpr = 257 (10);
+
+FTPrimaryExpr: FTWordsExpr = 258 (10);
+FTPrimaryExpr: FTSelectionExpr = 259 (10);
+
+FTWordsExpr: FTWordsValueExpr = 260 (10);
+
+FTWordsValueExpr: Literal = 261 (10);
+
+OptBindExpr: binds (let (Var, OptExpr),
+ OptBindExpr) = 262 (10);
+
%%
/** Access the Core representation of any node */
@@ -1446,7 +1506,7 @@
C(R(p))));
} break;
-
+
/* OptBindExpr: binds (bind (vars (var_type (Var,
nil),
OptPosVar),
@@ -3906,6 +3966,156 @@
C(p) = seqtype (PFty_star (PFty_docmgmt ()));
break;
+ /* FTContainsExpr: RangeExpr */
+ case 239:
+ break;
+
+ /* FTContainsExpr: ftcontains (RangeExpr, FTSelectionExpr) */
+ case 240:
+ {
+ PFfun_t *op_ftcontains = function (PFqname (PFns_fts,
"ftcontains"));
+ two_arg_fun_worker (p, op_ftcontains);
+
+ } break;
+
+ /* FTContainsExpr: ftcontains (RangeExpr, FTFilterExpr) */
+ case 241:
+ break;
+
+ /* OptBindExpr: binds (bind (vars (vars (var_type (Var,
+ nil),
+ OptPosVar),
+ OptFTScoreVar),
+ OptExpr),
+ OptBindExpr) */
+ case 242:
+ C(p) = for_ (forbind (forvars2 (C(LLLLL(p)), C(LLLR(p)),
C(LLR(p))),
+ C(LR(p))),
+ C(R(p)));
+ break;
+
+ /* OptBindExpr: binds (bind (vars (vars (var_type (
+ Var,
+
TypeDeclaration),
+ OptPosVar),
+ OptFTScoreVar),
+ OptExpr),
+ OptBindExpr) */
+ case 243:
+ {
+ PFvar_t *v = new_var (NULL);
+
+ C(p) = for_ (forbind (forvars2 (var (v), C(LLLR(p)), C(LLR(p))),
+ C(LR(p))),
+ let (letbind (C(LLLLL(p)),
+ proof (subty (var (v),
+ C(LLLLR(p))),
+ seqcast (C(LLLLR(p)),
+ var (v)))),
+ C(R(p))));
+ } break;
+
+ /* OptFTScoreVar: nil */
+ case 244:
+ C(p) = nil ();
+ break;
+
+ /* OptFTScoreVar: Var */
+ case 245:
+ break;
+
+ /*FTFilterExpr: ftfilter (FTSelectionExpr,
+ OptFTIgnoreOption) */
+ case 246:
+ break;
+
+ /*FTIgnoreOption: ftignore (UnionExpr) */
+ case 247:
+ PFoops_loc (OOPS_NOTSUPPORTED, p->loc,
+ "Full text ignore options not yet implemented");
+ break;
+
+ /*FTSelectionExpr: FTOrExpr */
+ case 248:
+ break;
+
+ /*FTOrExpr: FTAndExpr */
+ case 249:
+ break;
+
+ /*FTOrExpr: ftor (FTAndExpr, FTAndExpr) */
+ case 250:
+ PFoops_loc (OOPS_NOTSUPPORTED, p->loc,
+ "Full text Or operator not yet supported");
+ break;
+
+ /*FTAndExpr: FTMildNot */
+ case 251:
+ break;
+
+ /*FTAndExpr: ftand (FTMildNot, FTMildNot) */
+ case 252:
+ PFoops_loc (OOPS_NOTSUPPORTED, p->loc,
+ "Full text And operator not yet supported");
+ break;
+
+ /*FTMildNot: FTUnaryNot */
+ case 253:
+ break;
+
+ /*FTMildNot: ftmildnot ( FTUnaryNot, FTUnaryNot) */
+ case 254:
+ PFoops_loc (OOPS_NOTSUPPORTED, p->loc,
+ "Full text mild-not not yet supported");
+ break;
+
+ /*FTUnaryNot: FTPrimaryWithOptions */
+ case 255:
+ break;
+
+ /*FTUnaryNot: ftnot (FTPrimaryWithOptions) */
+ case 256:
+ PFoops_loc (OOPS_NOTSUPPORTED, p->loc,
+ "Full text Not operator not yet supported");
+ break;
+
+ /*FTPrimaryWithOptions: FTPrimaryExpr */
+ case 257:
+ break;
+
+ /*FTPrimaryExpr: FTWordsExpr */
+ case 258:
+ break;
+
+ /*FTPrimaryExpr: FTSelectionExpr */
+ case 259:
+ assert (C(p));
+ break;
+
+ /*FTWordsExpr: FTWordsValueExpr */
+ case 260:
+ break;
+
+ /*FTWordsValueExpr: Literal */
+ case 261:
+ assert (C(p));
+ break;
+
+ /* OptBindExpr: binds (let (Var, OptExpr),
+ OptBindExpr) */
+ case 262:
+ {
+ PFfun_t *op_score = function (PFqname (PFns_fts, "score"));
+
+ /*C(p) = APPLY (op_plus,
+ num (0),
+ fs_convert_op_by_type (
+ fn_data (C(L(p))),
+ PFty_xs_double ()));*/
+ C(p) = let (letbind (C(LL(p)), APPLY (op_score, C(LR(p)))),
C(R(p)));
+
+ } break;
+
default:
PFoops_loc (OOPS_FATAL, p->loc, "untranslated expression");
break;
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins