--- trunk/pgest.c 2006/08/07 22:47:41 73 +++ trunk/pgest.c 2006/08/08 11:42:01 79 @@ -768,6 +768,7 @@ int knumber; int i; int create_doc = 0; + int edit_doc = 0; ESTNODE *node; ESTDOC *doc; @@ -810,7 +811,7 @@ } else if (TRIGGER_FIRED_BY_UPDATE(data->tg_event)) { ret = data->tg_newtuple; - create_doc++; + edit_doc++; } else if (TRIGGER_FIRED_BY_DELETE(data->tg_event)) { /* There is no new data */ @@ -823,13 +824,21 @@ elog(ERROR, "pgest_trigger() not called from INSERT/UPDATE/DELETE"); } - if ( create_doc ) { - - /* create a document object */ - doc = est_doc_new(); - est_doc_add_attr(doc, "@uri", key); + if ( create_doc || edit_doc ) { - elog(DEBUG1, "est_doc_new @uri=%s", key); + if ( create_doc ) { + /* create a document object */ + doc = est_doc_new(); + est_doc_add_attr(doc, "@uri", key); + + elog(DEBUG1, "est_doc_new @uri=%s", key); + } else { + /* edit existing document */ + doc = est_node_get_doc_by_uri(node, key); + if (doc == NULL) + elog(ERROR, "est_node_get_doc_by_uri(%s): %d\n", key, est_node_status(node)); + elog(DEBUG1, "est_node_get_doc_by_uri(%s)", key); + } for( i = 4; i < data->tg_trigger->tgnargs; i++ ) { @@ -843,9 +852,15 @@ } - /* register the document object to the node */ - if( ! est_node_put_doc(node, doc) ) - elog(ERROR, "est_node_put_doc: %d\n", est_node_status(node)); + if ( edit_doc ) { + /* update existing document */ + if( ! est_node_edit_doc(node, doc) ) + elog(ERROR, "est_node_edit_doc: %d\n", est_node_status(node)); + } else { + /* register the document object to the node */ + if( ! est_node_put_doc(node, doc) ) + elog(ERROR, "est_node_put_doc: %d\n", est_node_status(node)); + } /* destroy the document object */ est_doc_delete(doc);