Update of /cvsroot/monetdb/pathfinder/compiler/mil
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv22072/mil
Modified Files:
mil.c milgen.brg milprint.c
Log Message:
- add framework for handling ftcontains operator by funcall/funparam operators
U milprint.c
Index: milprint.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/mil/milprint.c,v
retrieving revision 1.94
retrieving revision 1.95
diff -u -d -r1.94 -r1.95
--- milprint.c 13 Mar 2009 08:37:05 -0000 1.94
+++ milprint.c 1 Apr 2009 13:25:19 -0000 1.95
@@ -440,6 +440,7 @@
, [m_tj_tokenize] = "[tijah_tokenize]"
, [m_tj_ft_index_info] = "ALG_tj_ft_index_info"
, [m_tj_query_handler] = "ALG_tj_query_handler"
+ , [m_tj_ftfun_handler] = "ALG_tj_ftfun_handler"
, [m_tj_add_fti_tape] = "ALG_tj_add_fti_tape"
, [m_tj_docmgmt_tape ] = "ALG_tj_docmgmt_tape"
#endif
@@ -1394,6 +1395,25 @@
print_expression (n->child[6]);
milprintf (")");
break;
+ case m_tj_ftfun_handler:
+ milprintf ("%s (", ID[n->kind]);
+ print_expression (n->child[0]);
+ milprintf (", ");
+ print_expression (n->child[1]);
+ milprintf (", ");
+ print_expression (n->child[2]);
+ milprintf (", ");
+ print_expression (n->child[3]);
+ milprintf (", ");
+ print_expression (n->child[4]);
+ milprintf (", ");
+ print_expression (n->child[5]);
+ milprintf (", ");
+ print_expression (n->child[6]);
+ milprintf (", ");
+ print_expression (n->child[7]);
+ milprintf (")");
+ break;
case m_tj_add_fti_tape:
milprintf ("%s (", ID[n->kind]);
print_expression (n->child[0]);
U mil.c
Index: mil.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/mil/mil.c,v
retrieving revision 1.80
retrieving revision 1.81
diff -u -d -r1.80 -r1.81
--- mil.c 10 Mar 2009 12:20:43 -0000 1.80
+++ mil.c 1 Apr 2009 13:25:18 -0000 1.81
@@ -2073,6 +2073,13 @@
return wire7 (m_tj_query_handler, a, b, c, d, e, f, g);
}
+/** pftijah main ftfun handler */
+PFmil_t *
+PFmil_tj_ftfun_handler (const PFmil_t *a, const PFmil_t *b, const PFmil_t *c,
const PFmil_t *d, const PFmil_t *e, const PFmil_t *f, const PFmil_t *g, const
PFmil_t *h)
+{
+ return wire8 (m_tj_ftfun_handler, a, b, c, d, e, f, g, h);
+}
+
PFmil_t *
PFmil_tj_add_fti_tape (const PFmil_t *a, const PFmil_t *b, const PFmil_t *c,
const PFmil_t *d, const PFmil_t *e, const PFmil_t *f)
{
U milgen.brg
Index: milgen.brg
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/mil/milgen.brg,v
retrieving revision 1.211
retrieving revision 1.212
diff -u -d -r1.211 -r1.212
--- milgen.brg 18 Mar 2009 09:45:00 -0000 1.211
+++ milgen.brg 1 Apr 2009 13:25:19 -0000 1.212
@@ -10164,6 +10164,72 @@
pft_unpack_pfop(p,tjqres,fc_iter_a,fc_item_a,restype,fc_item_a,fc_pos_a);
unpin(tjqres,1);
+ } else if ( PFT_FUN_FTFUN(fcname) ) {
+ int fcci = 0;
+ PFalg_simple_type_t restype;
+ /* function returns nodes OR booleans */
+ int returnNodes = PTF_QUERY_NODES(fcname);
+
+ mvar_t *retNodes = new_var (1);
+ if ( returnNodes ) {
+ execute (assgn(var(retNodes->name),lit_bit(false)));
+ restype = aat_pre;
+ } else {
+ execute (assgn(var(retNodes->name),lit_bit(true)));
+ restype = aat_int;
+ }
+
+ mvar_t *pfop_sn, *pfop_terms, *pfop_opt, *pfop_ign;
+
+ if ( PTF_FTFUN_STARTNODES(fcname) ) {
+ pfop_sn = pft_create_pfop(*(PFpa_op_t **)PFarray_at
(fun_params,fcci),aat_pre,PFT_NOT_ORDERED);
+ fcci++;
+ } else {
+ pfop_sn =
pft_create_pfop(NULL,aat_pre,PFT_NOT_ORDERED);
+ }
+
+ pfop_terms = pft_create_pfop(*(PFpa_op_t **)PFarray_at
(fun_params,fcci),aat_str,PFT_NOT_ORDERED);
+ fcci++;
+
+ if ( PTF_FTFUN_OPTIONS(fcname) ) {
+ pfop_opt = pft_create_pfop(*(PFpa_op_t **)PFarray_at
(fun_params,fcci),aat_pre,PFT_NOT_ORDERED);
+ fcci++;
+ } else {
+ pfop_opt =
pft_create_pfop(NULL,aat_pre,PFT_NOT_ORDERED);
+ }
+
+ if ( PTF_FTFUN_IGNORES(fcname) ) {
+ pfop_ign = pft_create_pfop(*(PFpa_op_t **)PFarray_at
(fun_params,fcci),aat_pre,PFT_NOT_ORDERED);
+ fcci++;
+ } else {
+ pfop_ign =
pft_create_pfop(NULL,aat_pre,PFT_NOT_ORDERED);
+ }
+
+ mvar_t *tjqres = new_var(1);
+ execute(
+ assgn(var(tjqres->name),
+ tj_ftfun_handler(
+ var(retNodes->name),
+ var(pfop_sn->name),
+ var(pfop_terms->name),
+ var(pfop_opt->name),
+ var(pfop_ign->name),
+ var(fc_loop->name),
+ var (PF_MIL_VAR_WS),
+ var (PF_MIL_TIJAH_SCORE_DB)
+ )
+ )
+ );
+ unpin(retNodes,1);
+
+ unpin(pfop_sn,1);
+ unpin(pfop_terms,1);
+ unpin(pfop_opt,1);
+ unpin(pfop_ign,1);
+
+
pft_unpack_pfop(p,tjqres,fc_iter_a,fc_item_a,restype,fc_item_a,fc_pos_a);
+
+ unpin(tjqres,1);
} else if ( PFT_FUN_MANAGE(fcname) ) {
int fcci = 0;
------------------------------------------------------------------------------
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins