77 |
* STDOUT and STDERR (just to be sure) */ |
* STDOUT and STDERR (just to be sure) */ |
78 |
if ( logfh = fopen("/tmp/pgswish.log", "a") ) { |
if ( logfh = fopen("/tmp/pgswish.log", "a") ) { |
79 |
set_error_handle( logfh ); |
set_error_handle( logfh ); |
80 |
elog(INFO, "loggin swish-e errors to /tmp/pgswish.log"); |
elog(DEBUG1, "loggin swish-e errors to /tmp/pgswish.log"); |
81 |
/* redirect STDOUT and STDERR to log */ |
/* redirect STDOUT and STDERR to log */ |
82 |
dup2(1, logfh); |
dup2(1, logfh); |
83 |
dup2(2, logfh); |
dup2(2, logfh); |
85 |
elog(INFO, "can't open /tmp/pgswish.log -- errors from swish-e won't be cought and may result in back-end crashes!"); |
elog(INFO, "can't open /tmp/pgswish.log -- errors from swish-e won't be cought and may result in back-end crashes!"); |
86 |
} |
} |
87 |
|
|
88 |
elog(INFO, "pgswish: SwishInit(%s)", index_path); |
elog(DEBUG1, "pgswish: SwishInit(%s)", index_path); |
89 |
|
|
90 |
swish_handle = SwishInit( index_path ); |
swish_handle = SwishInit( index_path ); |
91 |
|
|
92 |
if ( SwishError( swish_handle ) ) |
if ( SwishError( swish_handle ) || ! swish_handle) { |
93 |
elog(INFO, "pgswish: SwishInit(%s) failed: %s", index_path, SwishErrorString( swish_handle )); |
elog(ERROR, "pgswish: SwishInit(%s) failed: %s", index_path, SwishErrorString( swish_handle )); |
94 |
|
|
|
elog(INFO, "handle: %08x", swish_handle); |
|
|
|
|
|
if (! swish_handle) { |
|
|
elog(ERROR, "pgswish: can't open %s", index_path); |
|
95 |
SRF_RETURN_DONE(funcctx); |
SRF_RETURN_DONE(funcctx); |
96 |
} |
} |
97 |
|
|
100 |
SwishRankScheme( swish_handle, 0 ); |
SwishRankScheme( swish_handle, 0 ); |
101 |
if (error_or_abort( swish_handle )) SRF_RETURN_DONE(funcctx); |
if (error_or_abort( swish_handle )) SRF_RETURN_DONE(funcctx); |
102 |
|
|
103 |
elog(INFO, "pgswish: SwishQuery(%s)", query); |
elog(DEBUG1, "pgswish: SwishQuery(%s)", query); |
104 |
/* Here's a short-cut to searching that creates a search object and searches at the same time */ |
/* Here's a short-cut to searching that creates a search object and searches at the same time */ |
105 |
swish_results = SwishQuery( swish_handle, query); |
swish_results = SwishQuery( swish_handle, query); |
106 |
if (error_or_abort( swish_handle )) SRF_RETURN_DONE(funcctx); |
if (error_or_abort( swish_handle )) SRF_RETURN_DONE(funcctx); |
112 |
if ( 0 == funcctx->max_calls ) |
if ( 0 == funcctx->max_calls ) |
113 |
elog(INFO, "no results for: %s", query ); |
elog(INFO, "no results for: %s", query ); |
114 |
|
|
115 |
elog(INFO, "pgswish: SwishHits = %d", funcctx->max_calls); |
elog(DEBUG1, "pgswish: SwishHits = %d", funcctx->max_calls); |
116 |
|
|
117 |
/* Build a tuple description for a __pgswish tuple */ |
/* Build a tuple description for a __pgswish tuple */ |
118 |
tupdesc = RelationNameGetTupleDesc("__pgswish"); |
tupdesc = RelationNameGetTupleDesc("__pgswish"); |
132 |
|
|
133 |
MemoryContextSwitchTo(oldcontext); |
MemoryContextSwitchTo(oldcontext); |
134 |
|
|
135 |
elog(INFO, "SRF_IS_FIRSTCALL done"); |
elog(DEBUG1, "SRF_IS_FIRSTCALL done"); |
136 |
} |
} |
137 |
|
|
138 |
/* stuff done on every call of the function */ |
/* stuff done on every call of the function */ |
148 |
HeapTuple tuple; |
HeapTuple tuple; |
149 |
Datum result; |
Datum result; |
150 |
|
|
151 |
elog(INFO, "pgswish: loop count %d", call_cntr); |
elog(DEBUG1, "pgswish: loop count %d", call_cntr); |
152 |
|
|
153 |
if (! swish_results) { |
if (! swish_results) { |
154 |
elog(ERROR, "pgswish: no swish-e results"); |
elog(ERROR, "pgswish: no swish-e results"); |
172 |
SRF_RETURN_DONE(funcctx); |
SRF_RETURN_DONE(funcctx); |
173 |
} |
} |
174 |
|
|
175 |
elog(INFO, "Path: %s\n Rank: %lu\n Size: %lu\n Title: %s\n Index: %s\n Modified: %s\n Record #: %lu\n File #: %lu\n\n", |
elog(DEBUG1, "Path: %s\n Rank: %lu\n Size: %lu\n Title: %s\n Index: %s\n Modified: %s\n Record #: %lu\n File #: %lu\n\n", |
176 |
SwishResultPropertyStr ( sw_res, "swishdocpath" ), |
SwishResultPropertyStr ( sw_res, "swishdocpath" ), |
177 |
SwishResultPropertyULong ( sw_res, "swishrank" ), |
SwishResultPropertyULong ( sw_res, "swishrank" ), |
178 |
SwishResultPropertyULong ( sw_res, "swishdocsize" ), |
SwishResultPropertyULong ( sw_res, "swishdocsize" ), |
218 |
|
|
219 |
SRF_RETURN_NEXT(funcctx, result); |
SRF_RETURN_NEXT(funcctx, result); |
220 |
} else { |
} else { |
221 |
elog(INFO, "loop over"); |
elog(DEBUG1, "loop over"); |
222 |
|
|
223 |
/* free swish object and close */ |
/* free swish object and close */ |
224 |
Free_Search_Object( search ); |
Free_Search_Object( search ); |
362 |
* STDOUT and STDERR (just to be sure) */ |
* STDOUT and STDERR (just to be sure) */ |
363 |
if ( logfh = fopen("/tmp/pgswish.log", "a") ) { |
if ( logfh = fopen("/tmp/pgswish.log", "a") ) { |
364 |
set_error_handle( logfh ); |
set_error_handle( logfh ); |
365 |
elog(INFO, "loggin swish-e errors to /tmp/pgswish.log"); |
elog(DEBUG1, "loggin swish-e errors to /tmp/pgswish.log"); |
366 |
/* redirect STDOUT and STDERR to log */ |
/* redirect STDOUT and STDERR to log */ |
367 |
dup2(1, logfh); |
dup2(1, logfh); |
368 |
dup2(2, logfh); |
dup2(2, logfh); |
370 |
elog(INFO, "can't open /tmp/pgswish.log -- errors from swish-e won't be cought and may result in back-end crashes!"); |
elog(INFO, "can't open /tmp/pgswish.log -- errors from swish-e won't be cought and may result in back-end crashes!"); |
371 |
} |
} |
372 |
|
|
373 |
elog(INFO, "pgswish: SwishInit(%s)", index_path); |
elog(DEBUG1, "pgswish: SwishInit(%s)", index_path); |
374 |
|
|
375 |
swish_handle = SwishInit( index_path ); |
swish_handle = SwishInit( index_path ); |
376 |
|
|
387 |
SwishRankScheme( swish_handle, 0 ); |
SwishRankScheme( swish_handle, 0 ); |
388 |
error_or_abort( swish_handle ); |
error_or_abort( swish_handle ); |
389 |
|
|
390 |
elog(INFO, "pgswish: SwishQuery(%s)", query); |
elog(DEBUG1, "pgswish: SwishQuery(%s)", query); |
391 |
/* Here's a short-cut to searching that creates a search object |
/* Here's a short-cut to searching that creates a search object |
392 |
* and searches at the same time */ |
* and searches at the same time */ |
393 |
|
|
431 |
if (! ( SwishErrorString( swish_handle ) ) ) { |
if (! ( SwishErrorString( swish_handle ) ) ) { |
432 |
elog(INFO, "can't find result %d", i + offset); |
elog(INFO, "can't find result %d", i + offset); |
433 |
} else { |
} else { |
434 |
elog(INFO, "Path: %s\n Rank: %lu\n Size: %lu\n Title: %s\n Index: %s\n Modified: %s\n Record #: %lu\n File #: %lu\n\n", |
elog(DEBUG1, "Path: %s\n Rank: %lu\n Size: %lu\n Title: %s\n Index: %s\n Modified: %s\n Record #: %lu\n File #: %lu\n\n", |
435 |
SwishResultPropertyStr ( sw_res, "swishdocpath" ), |
SwishResultPropertyStr ( sw_res, "swishdocpath" ), |
436 |
SwishResultPropertyULong ( sw_res, "swishrank" ), |
SwishResultPropertyULong ( sw_res, "swishrank" ), |
437 |
SwishResultPropertyULong ( sw_res, "swishdocsize" ), |
SwishResultPropertyULong ( sw_res, "swishdocsize" ), |