/[pgestraier]/trunk/pgest.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/pgest.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 9 by dpavlin, Sun May 22 21:18:11 2005 UTC revision 12 by dpavlin, Wed May 25 23:38:37 2005 UTC
# Line 63  Datum pgest(PG_FUNCTION_ARGS) { Line 63  Datum pgest(PG_FUNCTION_ARGS) {
63          if (SRF_IS_FIRSTCALL()) {          if (SRF_IS_FIRSTCALL()) {
64                  MemoryContext   oldcontext;                  MemoryContext   oldcontext;
65    
                 /* take arguments from function */  
                 //index_path = _textout(PG_GETARG_TEXT_P(0));  
                 index_path = _textout(PG_GETARG_TEXT_P(0));  
                 query = _textout(PG_GETARG_TEXT_P(1));  
                 attr = _textout(PG_GETARG_TEXT_P(2));  
                 limit = PG_GETARG_INT32(3);  
                 offset = PG_GETARG_INT32(4);  
   
66                  /* create a function context for cross-call persistence */                  /* create a function context for cross-call persistence */
67                  funcctx = SRF_FIRSTCALL_INIT();                  funcctx = SRF_FIRSTCALL_INIT();
68    
69                  /* switch to memory context appropriate for multiple function calls */                  /* switch to memory context appropriate for multiple function calls */
70                  oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);                  oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
71                    /* take arguments from function */
72    
73                    /* index path */
74                    if (PG_ARGISNULL(0)) {
75                            elog(ERROR, "index path can't be null");
76                            SRF_RETURN_DONE(funcctx);
77                    }
78                    index_path = _textout(PG_GETARG_TEXT_P(0));
79    
80                    /* query string */
81                    if (PG_ARGISNULL(0)) {
82                            query = "";
83                    } else {
84                            query = _textout(PG_GETARG_TEXT_P(1));
85                    }
86    
87                    /* atribute filter */
88                    if (PG_ARGISNULL(2)) {
89                            attr = "";
90                    } else {
91                            attr = _textout(PG_GETARG_TEXT_P(2));
92                    }
93    
94                    /* limit */
95                    if (! PG_ARGISNULL(3)) limit = PG_GETARG_INT32(3);
96    
97                    /* offset */
98                    if (! PG_ARGISNULL(4)) offset = PG_GETARG_INT32(4);
99    
100    
101                  /* open the database */                  /* open the database */
102                  elog(DEBUG1, "pgest: est_db_open(%s)", index_path);                  elog(DEBUG1, "pgest: est_db_open(%s)", index_path);
# Line 85  Datum pgest(PG_FUNCTION_ARGS) { Line 106  Datum pgest(PG_FUNCTION_ARGS) {
106                          SRF_RETURN_DONE(funcctx);                          SRF_RETURN_DONE(funcctx);
107                  }                  }
108                                    
109                  elog(INFO, "pgest: query[%s] attr[%s] limit %d offset %d", query, attr, limit, offset);                  elog(INFO, "pgest: query[%s] attr[%s] limit %d offset %d", query, (PG_ARGISNULL(2) ? "NULL" : attr), limit, offset);
110                                    
111                  /* create a search condition object */                  /* create a search condition object */
112                  if (!(cond = est_cond_new())) {                  if (!(cond = est_cond_new())) {
# Line 94  Datum pgest(PG_FUNCTION_ARGS) { Line 115  Datum pgest(PG_FUNCTION_ARGS) {
115                  }                  }
116                                    
117                  /* set the search phrase to the search condition object */                  /* set the search phrase to the search condition object */
118                  if (strlen(query) > 0)                  if (! PG_ARGISNULL(1) && strlen(query) > 0)
119                          est_cond_set_phrase(cond, query);                          est_cond_set_phrase(cond, query);
120    
121                  /* minimum valid attribute length is 10: @a STREQ a */                  /* minimum valid attribute length is 10: @a STREQ a */
122                  if (attr != NULL && strlen(attr) >= 10) {                  if (! PG_ARGISNULL(2) && strlen(attr) >= 10) {
123                          elog(INFO,"est_cond_add_attr(%s)", attr);                          elog(INFO,"est_cond_add_attr(%s)", attr);
124                          est_cond_add_attr(cond, attr);                          est_cond_add_attr(cond, attr);
125                  }                  }

Legend:
Removed from v.9  
changed lines
  Added in v.12

  ViewVC Help
Powered by ViewVC 1.1.26