[Tritonn-commit 142] [svn] [156] added write_row.

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2008年 6月 20日 (金) 18:08:42 JST


Revision: 156
          http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=tritonn&view=rev&rev=156
Author:   mir
Date:     2008-06-20 18:08:42 +0900 (Fri, 20 Jun 2008)

Log Message:
-----------
added write_row.

Modified Paths:
--------------
    trunk/src/ha_tritonn.cc
    trunk/src/ha_tritonn.h


-------------- next part --------------
Modified: trunk/src/ha_tritonn.cc
===================================================================
--- trunk/src/ha_tritonn.cc	2008-06-20 07:12:00 UTC (rev 155)
+++ trunk/src/ha_tritonn.cc	2008-06-20 09:08:42 UTC (rev 156)
@@ -276,7 +276,7 @@
   if (!(share = get_share(name, table)))
     DBUG_RETURN(HA_ERR_OUT_OF_MEM);
   thr_lock_data_init(&share->lock,&lock,NULL);
-
+  share->short_name = table_share->table_name.str;
   ctx = sen_ctx_open(get_sen_db(table_share->db.str),SEN_CTX_USEQL);
 
   DBUG_RETURN(0);
@@ -561,10 +561,23 @@
 int ha_tritonn::write_row(uchar* buf)
 {
   DBTN;
+  int i=0;
+  char ql[1024];
+  char *pkey_str;
   for (Field **field=table->field; *field; field++) {
     String str;
     (*field)->val_str(&str);
-    //    printf("[%s]\n",(*field)->val_str(new String[1])->ptr());
+    str.chop();
+    if (i==0) {
+      pkey_str = (char*) sql_alloc(str.length()+1);
+      strncpy(pkey_str,str.ptr(),str.length()+1);
+      my_snprintf(ql,1024,"(<%s> ::new \"%s\")",share->short_name,pkey_str);
+    } else {
+      my_snprintf(ql,1024,"((<%s> : \"%s\") :%s \"%s\")",
+		  share->short_name,pkey_str, (*field)->field_name,str.ptr());
+    }
+    call_senna_ql(ctx,ql);
+    i++;
   }
 
   return 0;
@@ -577,7 +590,7 @@
   d->db_name_length = strlen(db_name);
   d->db_name = (char*) my_malloc(d->db_name_length,MYF(0));
   memcpy(d->db_name,db_name,d->db_name_length);
-  my_snprintf(file_name,FN_REFLEN,"%s/tritonn.db",d->db_name);
+  my_snprintf(file_name,FN_REFLEN,"%s/tritonn.db",db_name);
   d->db = sen_db_open(file_name);
   if (d->db == NULL) {
     d->db = sen_db_create(file_name,0,sen_enc_utf8);
@@ -593,6 +606,7 @@
   /* case1: no instance created yet */
   if (tdb == NULL) {
     tdb = open_or_create_db(db_name);
+    pthread_mutex_unlock(&tritonn_mutex);
     return tdb->db;
   }
   /* case2: instance hit */

Modified: trunk/src/ha_tritonn.h
===================================================================
--- trunk/src/ha_tritonn.h	2008-06-20 07:12:00 UTC (rev 155)
+++ trunk/src/ha_tritonn.h	2008-06-20 09:08:42 UTC (rev 156)
@@ -17,6 +17,7 @@
 */
 typedef struct st_tritonn_share {
   char *table_name;
+  char *short_name;
   uint table_name_length,use_count;
   pthread_mutex_t mutex;
   THR_LOCK lock;


Tritonn-commit メーリングリストの案内
Back to archive index