bdr--0.8.0.1--0.8.0.2.sql \
bdr--0.8.0.2--0.8.0.3.sql \
bdr--0.8.0.3--0.8.0.4.sql \
- bdr--0.8.0.4--0.8.0.5.sql
+ bdr--0.8.0.4--0.8.0.5.sql \
+ bdr--0.8.0.5--0.8.0.6.sql
DATA_built = bdr--0.8.0.1.sql bdr--0.8.0.2.sql bdr--0.8.0.3.sql \
- bdr--0.8.0.4.sql bdr--0.8.0.5.sql
+ bdr--0.8.0.4.sql bdr--0.8.0.5.sql bdr--0.8.0.6.sql
DOCS = bdr.conf.sample README.bdr
SCRIPTS = scripts/bdr_initial_load bdr_init_copy bdr_resetxlog bdr_dump
bdr--0.8.0.3--0.8.0.4.sql bdr--0.8.0.4--0.8.0.5.sql
cat $^ > $@
+bdr--0.8.0.6.sql: bdr--0.8.0.sql bdr--0.8.0--0.8.0.1.sql \
+ bdr--0.8.0.1--0.8.0.2.sql bdr--0.8.0.2--0.8.0.3.sql \
+ bdr--0.8.0.3--0.8.0.4.sql bdr--0.8.0.4--0.8.0.5.sql \
+ bdr--0.8.0.5--0.8.0.6.sql
+ cat $^ > $@
+
bdr_resetxlog: pg_resetxlog.o
$(CC) $(CFLAGS) $^ $(LDFLAGS) $(LDFLAGS_EX) $(libpq_pgport) $(LIBS) -o $@$(X)
REGRESSCHECKS= \
init \
upgrade \
+ identifier \
$(DDLREGRESSCHECKS) \
dml/basic dml/contrib dml/delete_pk dml/extended dml/missing_pk dml/toasted
--- /dev/null
+SET LOCAL search_path = bdr;
+SET bdr.permit_unsafe_ddl_commands = true;
+SET bdr.skip_ddl_replication = true;
+
+CREATE FUNCTION bdr_get_local_nodeid( sysid OUT oid, timeline OUT oid, dboid OUT oid)
+RETURNS record LANGUAGE c AS 'MODULE_PATHNAME';
+
+-- bdr_get_local_nodeid is intentionally not revoked from all, it's read-only
+
+RESET bdr.permit_unsafe_ddl_commands;
+RESET bdr.skip_ddl_replication;
+RESET search_path;
Datum bdr_apply_resume(PG_FUNCTION_ARGS);
Datum bdr_version(PG_FUNCTION_ARGS);
Datum bdr_variant(PG_FUNCTION_ARGS);
+Datum bdr_get_local_nodeid(PG_FUNCTION_ARGS);
PG_FUNCTION_INFO_V1(bdr_apply_pause);
PG_FUNCTION_INFO_V1(bdr_apply_resume);
PG_FUNCTION_INFO_V1(bdr_version);
PG_FUNCTION_INFO_V1(bdr_variant);
+PG_FUNCTION_INFO_V1(bdr_get_local_nodeid);
static void
bdr_sigterm(SIGNAL_ARGS)
{
PG_RETURN_TEXT_P(cstring_to_text(BDR_VARIANT));
}
+
+/* Return a tuple of (sysid oid, tlid oid, dboid oid) */
+Datum
+bdr_get_local_nodeid(PG_FUNCTION_ARGS)
+{
+ Datum values[3];
+ bool isnull[3] = {false, false, false};
+ TupleDesc tupleDesc;
+ HeapTuple returnTuple;
+
+ if (get_call_result_type(fcinfo, NULL, &tupleDesc) != TYPEFUNC_COMPOSITE)
+ elog(ERROR, "return type must be a row type");
+
+ values[0] = ObjectIdGetDatum(GetSystemIdentifier());
+ values[1] = ObjectIdGetDatum(ThisTimeLineID);
+ values[2] = ObjectIdGetDatum(MyDatabaseId);
+
+ returnTuple = heap_form_tuple(tupleDesc, values, isnull);
+
+ PG_RETURN_DATUM(HeapTupleGetDatum(returnTuple));
+}
# bdr extension
comment = 'bdr support functions'
-default_version = '0.8.0.5'
+default_version = '0.8.0.6'
module_pathname = '$libdir/bdr'
relocatable = false
requires = btree_gist
--- /dev/null
+-- No real way to test the sysid, so ignore it
+SELECT timeline= 1, dboid = (SELECT oid FROM pg_database WHERE datname = current_database())
+FROM bdr.bdr_get_local_nodeid();
+ ?column? | ?column?
+----------+----------
+ t | t
+(1 row)
+
DROP EXTENSION bdr;
CREATE EXTENSION bdr VERSION '0.8.0.5';
DROP EXTENSION bdr;
+CREATE EXTENSION bdr VERSION '0.8.0.6';
+DROP EXTENSION bdr;
-- evolve version one by one from the oldest to the newest one
CREATE EXTENSION bdr VERSION '0.8.0';
ALTER EXTENSION bdr UPDATE TO '0.8.0.1';
ALTER EXTENSION bdr UPDATE TO '0.8.0.3';
ALTER EXTENSION bdr UPDATE TO '0.8.0.4';
ALTER EXTENSION bdr UPDATE TO '0.8.0.5';
+ALTER EXTENSION bdr UPDATE TO '0.8.0.6';
-- Should never have to do anything: You missed adding the new version above.
ALTER EXTENSION bdr UPDATE;
-NOTICE: version "0.8.0.5" of extension "bdr" is already installed
+NOTICE: version "0.8.0.6" of extension "bdr" is already installed
\c postgres
DROP DATABASE extension_upgrade;
--- /dev/null
+-- No real way to test the sysid, so ignore it
+SELECT timeline= 1, dboid = (SELECT oid FROM pg_database WHERE datname = current_database())
+FROM bdr.bdr_get_local_nodeid();
CREATE EXTENSION bdr VERSION '0.8.0.5';
DROP EXTENSION bdr;
+CREATE EXTENSION bdr VERSION '0.8.0.6';
+DROP EXTENSION bdr;
+
-- evolve version one by one from the oldest to the newest one
CREATE EXTENSION bdr VERSION '0.8.0';
ALTER EXTENSION bdr UPDATE TO '0.8.0.1';
ALTER EXTENSION bdr UPDATE TO '0.8.0.3';
ALTER EXTENSION bdr UPDATE TO '0.8.0.4';
ALTER EXTENSION bdr UPDATE TO '0.8.0.5';
+ALTER EXTENSION bdr UPDATE TO '0.8.0.6';
-- Should never have to do anything: You missed adding the new version above.