bdr: refactor BdrConnectionConfig to use char * instead of NameData
authorChristian Kruse <cjk@defunct.ch>
Tue, 13 May 2014 13:50:21 +0000 (15:50 +0200)
committerAndres Freund <andres@anarazel.de>
Thu, 3 Jul 2014 15:55:35 +0000 (17:55 +0200)
contrib/bdr/bdr.c
contrib/bdr/bdr.h
contrib/bdr/bdr_apply.c
contrib/bdr/bdr_init_replica.c

index 6a31c733fb5a42299f40dd23dc62f2f162bb0e9d..5f3b2896baf2a5f09e47f88d97ce6655c2d92fa1 100644 (file)
@@ -526,13 +526,13 @@ bdr_apply_main(Datum main_arg)
    bdr_apply_config = bdr_connection_configs[bdr_apply_worker->connection_config_idx];
    Assert(bdr_apply_config != NULL);
 
-   bdr_worker_init(NameStr(bdr_apply_config->dbname));
+   bdr_worker_init(bdr_apply_config->dbname);
 
    CurrentResourceOwner = ResourceOwnerCreate(NULL, "bdr apply top-level resource owner");
    bdr_saved_resowner = CurrentResourceOwner;
 
    elog(DEBUG1, "%s initialized on %s",
-        MyBgworkerEntry->bgw_name, NameStr(bdr_apply_config->dbname));
+        MyBgworkerEntry->bgw_name, bdr_apply_config->dbname);
 
    streamConn = bdr_establish_connection_and_slot(
        bdr_apply_config, &slot_name, &origin_sysid,
@@ -784,8 +784,7 @@ bdr_create_con_gucs(char  *name,
    opts->is_valid = false;
    *out_config = opts;
 
-   strncpy(NameStr(opts->name), name, NAMEDATALEN);
-   NameStr(opts->name)[NAMEDATALEN-1] = '\0';
+   opts->name = pstrdup(name);
 
    sprintf(optname_dsn, "bdr.%s_dsn", name);
    DefineCustomStringVariable(optname_dsn,
@@ -854,10 +853,8 @@ bdr_create_con_gucs(char  *name,
                        (errcode(ERRCODE_CONFIG_FILE_ERROR),
                         errmsg("bdr %s: no dbname set", name)));
 
-           strncpy(NameStr(opts->dbname), cur_option->val,
-                   NAMEDATALEN);
-           NameStr(opts->dbname)[NAMEDATALEN-1] = '\0';
-           elog(DEBUG2, "bdr %s: dbname=%s", name, NameStr(opts->dbname));
+           opts->dbname = pstrdup(cur_option->val);
+           elog(DEBUG2, "bdr %s: dbname=%s", name, opts->dbname);
        }
 
        if (cur_option->val != NULL)
@@ -877,7 +874,7 @@ bdr_create_con_gucs(char  *name,
     */
    for (off = 0; off < *num_used_databases; off++)
    {
-       if (strcmp(NameStr(opts->dbname), used_databases[off]) == 0)
+       if (strcmp(opts->dbname, used_databases[off]) == 0)
            break;
    }
 
@@ -885,9 +882,9 @@ bdr_create_con_gucs(char  *name,
    {
        /* Didn't find a match, add new db name */
        used_databases[(*num_used_databases)++] =
-           pstrdup(NameStr(opts->dbname));
+           pstrdup(opts->dbname);
        elog(DEBUG2, "bdr %s: Saw new database %s, now %i known dbs",
-            name, NameStr(opts->dbname), (int)(*num_used_databases));
+            name, opts->dbname, (int)(*num_used_databases));
    }
 
    /*
@@ -952,7 +949,7 @@ bdr_launch_apply_workers(char *dbname)
                    BdrConnectionConfig *cfg =
                        bdr_connection_configs[con->connection_config_idx];
                    Assert(cfg != NULL);
-                   if ( strcmp(NameStr(cfg->dbname), dbname) == 0 )
+                   if ( strcmp(cfg->dbname, dbname) == 0 )
                    {
                        /* It's an apply worker for our DB; register it */
                        BackgroundWorkerHandle *bgw_handle;
@@ -966,7 +963,7 @@ bdr_launch_apply_workers(char *dbname)
                            continue;
 
                        snprintf(apply_worker.bgw_name, BGW_MAXLEN,
-                                "bdr apply: %s", NameStr(cfg->name));
+                                "bdr apply: %s", cfg->name);
                        apply_worker.bgw_main_arg = Int32GetDatum(i);
 
                        if (!RegisterDynamicBackgroundWorker(&apply_worker,
@@ -975,7 +972,7 @@ bdr_launch_apply_workers(char *dbname)
                            ereport(ERROR,
                                    (errmsg("bdr: Failed to register background worker"
                                            " %s, see previous log messages",
-                                           NameStr(cfg->name))));
+                                           cfg->name)));
                        }
                        /* We've launched this one, don't do it again */
                        con->bgw_is_registered = true;
index 936574dee56fdf3f4272fee17613979c511581db..bf867ff6f46f78226b282e74e0bdd50f01da34f0 100644 (file)
@@ -186,8 +186,8 @@ typedef struct BdrConnectionConfig
     * These aren't technically GUCs, but are per-connection config
     * information obtained from the GUCs.
     */
-   NameData name;
-   NameData dbname;
+   char *name;
+   char *dbname;
    /* Connection config might be broken (blank dsn, etc) */
    bool is_valid;
 } BdrConnectionConfig;
index e059649f792042c125cd97b14efe31b81b4f449f..fef93d23b06a68a0adbec03750463fb73eea281f 100644 (file)
@@ -153,7 +153,7 @@ process_remote_begin(StringInfo s)
 
    snprintf(statbuf, sizeof(statbuf),
            "bdr_apply: BEGIN origin(source, orig_lsn, timestamp): %s, %X/%X, %s",
-            NameStr(bdr_apply_config->name),
+            bdr_apply_config->name,
            (uint32) (origlsn >> 32), (uint32) origlsn,
            timestamptz_to_str(committime));
 
@@ -275,7 +275,7 @@ process_remote_commit(StringInfo s)
    {
        ereport(LOG,
                (errmsg("bdr apply %s finished processing; replayed to %X/%X of required %X/%X",
-                NameStr(bdr_apply_config->name),
+                bdr_apply_config->name,
                 (uint32)(end_lsn>>32), (uint32)end_lsn,
                 (uint32)(bdr_apply_worker->replay_stop_lsn>>32), (uint32)bdr_apply_worker->replay_stop_lsn)));
        /*
index d63f5e5857a3a2de0ed772c7a047a31bfeaeb71e..c1e22501c840e1c3098cf42fd85eacf1a6f3346b 100644 (file)
@@ -86,7 +86,7 @@ find_init_replica_worker(Name dbname)
        aw = &BdrWorkerCtl->slots[off].worker_data.apply_worker;
        cfg = bdr_connection_configs[aw->connection_config_idx];
 
-       if ((strcmp(NameStr(cfg->dbname), NameStr(*dbname)) == 0)
+       if ((strcmp(cfg->dbname, NameStr(*dbname)) == 0)
            && cfg->init_replica)
        {
            return &BdrWorkerCtl->slots[off];
@@ -437,7 +437,7 @@ bdr_drop_slot_and_replication_identifier(BdrConnectionConfig *cfg)
    char       *sqlstate;
 
    elog(DEBUG1, "bdr %s: Dropping slot and local ident from connection %s",
-        NameStr(cfg->dbname), NameStr(cfg->name));
+        cfg->dbname, cfg->name);
 
    snprintf(conninfo_repl, sizeof(conninfo_repl),
             "%s replication=database fallback_application_name=bdr",
@@ -457,13 +457,13 @@ bdr_drop_slot_and_replication_identifier(BdrConnectionConfig *cfg)
    {
        /* Local replication identifier exists and must be dropped. */
        elog(DEBUG2, "bdr %s: Deleting local replication identifier %hu",
-            NameStr(cfg->dbname), replication_identifier);
+            cfg->dbname, replication_identifier);
        bdr_delete_replication_identifier(replication_identifier);
    }
    else
    {
        elog(DEBUG2, "bdr %s: No local replication identifier to delete",
-            NameStr(cfg->dbname));
+            cfg->dbname);
    }
 
    /*
@@ -477,7 +477,7 @@ bdr_drop_slot_and_replication_identifier(BdrConnectionConfig *cfg)
    if (PQresultStatus(res) == PGRES_COMMAND_OK)
    {
        elog(DEBUG2, "bdr %s: remote replication slot %s deleted",
-            NameStr(cfg->dbname), NameStr(slot_name));
+            cfg->dbname, NameStr(slot_name));
    }
    else
    {
@@ -487,12 +487,12 @@ bdr_drop_slot_and_replication_identifier(BdrConnectionConfig *cfg)
        {
            ereport(ERROR,
                    (errmsg("'DROP_REPLICATION_SLOT %s' on bdr connection %s failed with sqlstate %s: %s",
-                           NameStr(slot_name), NameStr(cfg->name),
+                           NameStr(slot_name), cfg->name,
                            sqlstate,PQresultErrorMessage(res))));
        }
        else
        {
-           elog(DEBUG2, "bdr %s: No slot to delete", NameStr(cfg->dbname));
+           elog(DEBUG2, "bdr %s: No slot to delete", cfg->dbname);
        }
    }
    CommitTransactionCommand();
@@ -774,7 +774,7 @@ bdr_init_replica(Name dbname)
    init_replica_config = bdr_connection_configs
        [init_replica_worker->worker_data.apply_worker.connection_config_idx];
    elog(DEBUG2, "bdr %s: bdr_init_replica init from connection %s",
-        NameStr(*dbname), NameStr(init_replica_config->name));
+        NameStr(*dbname), init_replica_config->name);
 
    /*
     * Test to see if there's an entry in the remote's bdr.bdr_nodes for our
@@ -884,7 +884,7 @@ bdr_init_replica(Name dbname)
                [worker->worker_data.apply_worker.connection_config_idx];
 
            if (worker->worker_type == BDR_WORKER_APPLY
-               && strcmp(NameStr(cfg->dbname), NameStr(*dbname)) == 0)
+               && strcmp(cfg->dbname, NameStr(*dbname)) == 0)
                my_conn_idxs[n_conns++] = off;
        }
        LWLockRelease(BdrWorkerCtl->lock);
@@ -920,7 +920,7 @@ bdr_init_replica(Name dbname)
                [w->worker_data.apply_worker.connection_config_idx];
 
            elog(DEBUG1, "bdr %s: checking/creating slot for %s",
-                NameStr(*dbname), NameStr(cfg->name));
+                NameStr(*dbname), cfg->name);
            /*
             * Create the slot on the remote. The returned remote sysid and
             * timeline, the slot name, and the local replication identifier
@@ -977,7 +977,7 @@ bdr_init_replica(Name dbname)
         * copied over.
         */
        elog(DEBUG1, "bdr %s: creating and restoring dump for %s",
-            NameStr(*dbname), NameStr(init_replica_config->name));
+            NameStr(*dbname), init_replica_config->name);
        bdr_exec_init_replica(init_replica_config, init_snapshot);
        PQfinish(init_repl_conn);
 
@@ -1050,7 +1050,7 @@ bdr_catchup_to_lsn(int cfg_index,
    Assert(cfg->init_replica);
 
    elog(DEBUG1, "Registering bdr apply catchup worker %s for db %s to lsn %X/%X",
-        NameStr(cfg->name), NameStr(cfg->dbname),
+        cfg->name, cfg->dbname,
         (uint32)(target_lsn>>32), (uint32)target_lsn);
 
    /* Create the shmem entry for the catchup worker */
@@ -1111,9 +1111,9 @@ bdr_catchup_to_lsn(int cfg_index,
 
        snprintf(bgw.bgw_name, BGW_MAXLEN,
                 "bdr %s: catchup apply to %X/%X on %s",
-                NameStr(cfg->dbname),
+                cfg->dbname,
                 (uint32)(target_lsn >> 32), (uint32)target_lsn,
-                NameStr(cfg->name));
+                cfg->name);
        bgw.bgw_name[BGW_MAXLEN-1] = '\0';
 
        /* Launch the catchup worker and wait for it to start */
@@ -1176,13 +1176,13 @@ bdr_catchup_to_lsn(int cfg_index,
            /* Worker must've died before it finished */
            elog(ERROR,
                 "bdr %s: catchup worker exited before catching up to target LSN %X/%X",
-                NameStr(cfg->dbname),
+                cfg->dbname,
                 (uint32)(target_lsn>>32), (uint32)target_lsn);
        }
        else
        {
            elog(DEBUG1, "bdr %s: catchup worker caught up to target LSN",
-                NameStr(cfg->dbname));
+                cfg->dbname);
        }
    }
    PG_END_ENSURE_ERROR_CLEANUP(bdr_catchup_to_lsn_cleanup,