-fix message types for namestore, eliminate conflict with LM
[oweals/gnunet.git] / src / namestore / plugin_namestore_postgres.c
index 1daf0c7c1bfe57d54f83fcba0472f98857c1ad93..214727f7c07b042fd21831e86400aefb39af74b7 100644 (file)
@@ -113,7 +113,28 @@ database_setup (struct Plugin *plugin)
                                         "namestore-postgres");
   if (NULL == plugin->dbh)
     return GNUNET_SYSERR;
-  res =
+  if (GNUNET_YES == 
+      GNUNET_CONFIGURATION_get_value_yesno (plugin->cfg,
+                                           "namestore-postgres",
+                                           "TEMPORARY_TABLE"))
+  {
+    res =
+      PQexec (plugin->dbh,
+              "CREATE TEMPORARY TABLE ns091records ("
+             " zone_key BYTEA NOT NULL DEFAULT ''," 
+             " zone_delegation BYTEA NOT NULL DEFAULT ''," 
+             " zone_hash BYTEA NOT NULL DEFAULT ''," 
+             " record_count INTEGER NOT NULL DEFAULT 0,"
+             " record_data BYTEA NOT NULL DEFAULT '',"
+             " block_expiration_time BIGINT NOT NULL DEFAULT 0," 
+             " signature BYTEA NOT NULL DEFAULT '',"
+             " record_name TEXT NOT NULL DEFAULT ''," 
+             " record_name_hash BYTEA NOT NULL DEFAULT ''," 
+             " rvalue BIGINT NOT NULL DEFAULT 0"
+             ")" "WITH OIDS");
+  }
+  else
+    res =
       PQexec (plugin->dbh,
               "CREATE TABLE ns091records ("
              " zone_key BYTEA NOT NULL DEFAULT ''," 
@@ -127,6 +148,7 @@ database_setup (struct Plugin *plugin)
              " record_name_hash BYTEA NOT NULL DEFAULT ''," 
              " rvalue BIGINT NOT NULL DEFAULT 0"
              ")" "WITH OIDS");
+
   if ((NULL == res) || ((PQresultStatus (res) != PGRES_COMMAND_OK) && (0 != strcmp ("42P07",    /* duplicate table */
                                                                                     PQresultErrorField
                                                                                     (res,
@@ -348,6 +370,7 @@ namestore_postgres_put_records (void *cls,
  * @param iter iterator to call with the result
  * @param iter_cls closure for 'iter'
  * @return GNUNET_OK on success, GNUNET_NO if there were no results, GNUNET_SYSERR on error
+ *       'iter' will have been called unless the return value is 'GNUNET_SYSERR'
  */
 static int
 get_record_and_call_iterator (struct Plugin *plugin,
@@ -380,6 +403,7 @@ get_record_and_call_iterator (struct Plugin *plugin,
     LOG (GNUNET_ERROR_TYPE_DEBUG, 
         "Ending iteration (no more results)\n");
     PQclear (res);
+    iter (iter_cls, NULL, GNUNET_TIME_UNIT_ZERO_ABS, NULL, 0, NULL, NULL);
     return GNUNET_NO;
   }
   GNUNET_assert (1 == cnt);
@@ -443,6 +467,7 @@ get_record_and_call_iterator (struct Plugin *plugin,
  * @param iter function to call with the result
  * @param iter_cls closure for iter
  * @return GNUNET_OK on success, GNUNET_NO if there were no results, GNUNET_SYSERR on error
+ *       'iter' will have been called unless the return value is 'GNUNET_SYSERR'
  */
 static int 
 namestore_postgres_iterate_records (void *cls, 
@@ -521,6 +546,7 @@ namestore_postgres_iterate_records (void *cls,
  * @param iter function to call with the result
  * @param iter_cls closure for iter
  * @return GNUNET_OK on success, GNUNET_NO if there were no results, GNUNET_SYSERR on error
+ *       'iter' will have been called unless the return value is 'GNUNET_SYSERR'
  */
 static int
 namestore_postgres_zone_to_name (void *cls,