[Groonga-mysql-commit] mroonga/mroonga [master] [default][create] split pseudo column validation code.

Back to archive index

null+****@clear***** null+****@clear*****
2011年 6月 9日 (木) 18:09:19 JST


Kouhei Sutou	2011-06-09 09:09:19 +0000 (Thu, 09 Jun 2011)

  New Revision: a3b5673e0340a7a64d0c84728f2a1338ff075038

  Log:
    [default][create] split pseudo column validation code.

  Modified files:
    ha_mroonga.cc
    ha_mroonga.h

  Modified: ha_mroonga.cc (+22 -8)
===================================================================
--- ha_mroonga.cc    2011-06-09 09:07:21 +0000 (07ba546)
+++ ha_mroonga.cc    2011-06-09 09:09:19 +0000 (a794ea4)
@@ -977,12 +977,13 @@ int ha_mroonga::wrapper_create(const char *name, TABLE *table,
   DBUG_RETURN(error);
 }
 
-int ha_mroonga::default_create(const char *name, TABLE *table,
-                               HA_CREATE_INFO *info, MRN_SHARE *tmp_share)
+int ha_mroonga::default_create_validate_pseudo_column(TABLE *table)
 {
-  int error, i;
-  DBUG_ENTER("ha_mroonga::default_create");
-  uint n_columns = table->s->fields;
+  int error = 0;
+  uint i, n_columns;
+
+  DBUG_ENTER("ha_mroonga::default_create_validate_pseudo_column");
+  n_columns = table->s->fields;
   for (i = 0; i < n_columns; i++) {
     Field *field = table->s->field[i];
     const char *col_name = field->field_name;
@@ -1000,9 +1001,8 @@ int ha_mroonga::default_create(const char *name, TABLE *table,
         error = ER_CANT_CREATE_TABLE;
         my_message(error, "_id must be numeric data type", MYF(0));
         DBUG_RETURN(error);
-     }
-    }
-    if (strncmp(MRN_SCORE_COL_NAME, col_name, col_name_size) == 0) {
+      }
+    } else if (strncmp(MRN_SCORE_COL_NAME, col_name, col_name_size) == 0) {
       switch (field->type()) {
       case (MYSQL_TYPE_FLOAT) :
       case (MYSQL_TYPE_DOUBLE) :
@@ -1016,6 +1016,19 @@ int ha_mroonga::default_create(const char *name, TABLE *table,
     }
   }
 
+  DBUG_RETURN(error);
+}
+
+int ha_mroonga::default_create(const char *name, TABLE *table,
+                               HA_CREATE_INFO *info, MRN_SHARE *tmp_share)
+{
+  int error, i;
+  DBUG_ENTER("ha_mroonga::default_create");
+
+  error = default_create_validate_pseudo_column(table);
+  if (error != 0)
+    DBUG_RETURN(error);
+
   /* checking if index is used for virtual columns  */
   uint n_keys = table->s->keys;
   for (i = 0; i < n_keys; i++) {
@@ -1143,6 +1156,7 @@ int ha_mroonga::default_create(const char *name, TABLE *table,
   }
 
   /* create columns */
+  uint n_columns = table->s->fields;
   for (i = 0; i < n_columns; i++) {
     grn_obj *col_obj, *col_type;
     Field *field = table->s->field[i];

  Modified: ha_mroonga.h (+1 -0)
===================================================================
--- ha_mroonga.h    2011-06-09 09:07:21 +0000 (9ba8786)
+++ ha_mroonga.h    2011-06-09 09:09:19 +0000 (05ea8ea)
@@ -215,6 +215,7 @@ private:
                      HA_CREATE_INFO *info, MRN_SHARE *tmp_share);
   int default_create(const char *name, TABLE *table,
                      HA_CREATE_INFO *info, MRN_SHARE *tmp_share);
+  int default_create_validate_pseudo_column(TABLE *table);
   int wrapper_delete_table(const char *name, MRN_SHARE *tmp_share);
   int default_delete_table(const char *name, MRN_SHARE *tmp_share,
                            const char *tbl_name);




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