summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian2014-09-10 20:54:40 +0000
committerBruce Momjian2014-09-10 20:54:47 +0000
commit84aa8ba128a08e6fdebb2497c7a79ebf18093e12 (patch)
treedaa9ed15491616638dad814ebbf0024718e7be84
parent5b26278822c69dd76ef89fd50ecc7cdba9c3f035 (diff)
Issue a warning during the creation of hash indexes
-rw-r--r--src/backend/commands/indexcmds.c4
-rw-r--r--src/test/regress/expected/create_index.out4
-rw-r--r--src/test/regress/expected/enum.out1
-rw-r--r--src/test/regress/expected/macaddr.out1
-rw-r--r--src/test/regress/expected/replica_identity.out1
-rw-r--r--src/test/regress/expected/uuid.out1
6 files changed, 12 insertions, 0 deletions
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index fdfa6ca4f5..1afe02bd85 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -489,6 +489,10 @@ DefineIndex(Oid relationId,
accessMethodId = HeapTupleGetOid(tuple);
accessMethodForm = (Form_pg_am) GETSTRUCT(tuple);
+ if (strcmp(accessMethodName, "hash") == 0)
+ ereport(WARNING,
+ (errmsg("hash indexes are not WAL-logged so they are not crash-safe and cannot be used on streaming standbys")));
+
if (stmt->unique && !accessMethodForm->amcanunique)
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
diff --git a/src/test/regress/expected/create_index.out b/src/test/regress/expected/create_index.out
index f6f5516321..e68f9c288d 100644
--- a/src/test/regress/expected/create_index.out
+++ b/src/test/regress/expected/create_index.out
@@ -2238,9 +2238,13 @@ DROP TABLE array_gin_test;
-- HASH
--
CREATE INDEX hash_i4_index ON hash_i4_heap USING hash (random int4_ops);
+WARNING: hash indexes are not WAL-logged so they are not crash-safe and cannot be used on streaming standbys
CREATE INDEX hash_name_index ON hash_name_heap USING hash (random name_ops);
+WARNING: hash indexes are not WAL-logged so they are not crash-safe and cannot be used on streaming standbys
CREATE INDEX hash_txt_index ON hash_txt_heap USING hash (random text_ops);
+WARNING: hash indexes are not WAL-logged so they are not crash-safe and cannot be used on streaming standbys
CREATE INDEX hash_f8_index ON hash_f8_heap USING hash (random float8_ops);
+WARNING: hash indexes are not WAL-logged so they are not crash-safe and cannot be used on streaming standbys
-- CREATE INDEX hash_ovfl_index ON hash_ovfl_heap USING hash (x int4_ops);
--
-- Test functional index
diff --git a/src/test/regress/expected/enum.out b/src/test/regress/expected/enum.out
index 36826428a0..44f1c79848 100644
--- a/src/test/regress/expected/enum.out
+++ b/src/test/regress/expected/enum.out
@@ -383,6 +383,7 @@ DROP INDEX enumtest_btree;
-- Hash index / opclass with the = operator
--
CREATE INDEX enumtest_hash ON enumtest USING hash (col);
+WARNING: hash indexes are not WAL-logged so they are not crash-safe and cannot be used on streaming standbys
SELECT * FROM enumtest WHERE col = 'orange';
col
--------
diff --git a/src/test/regress/expected/macaddr.out b/src/test/regress/expected/macaddr.out
index 50d0369139..4c8dec0563 100644
--- a/src/test/regress/expected/macaddr.out
+++ b/src/test/regress/expected/macaddr.out
@@ -39,6 +39,7 @@ SELECT * FROM macaddr_data;
CREATE INDEX macaddr_data_btree ON macaddr_data USING btree (b);
CREATE INDEX macaddr_data_hash ON macaddr_data USING hash (b);
+WARNING: hash indexes are not WAL-logged so they are not crash-safe and cannot be used on streaming standbys
SELECT a, b, trunc(b) FROM macaddr_data ORDER BY 2, 1;
a | b | trunc
----+-------------------+-------------------
diff --git a/src/test/regress/expected/replica_identity.out b/src/test/regress/expected/replica_identity.out
index 96dc98bf08..48426e8d92 100644
--- a/src/test/regress/expected/replica_identity.out
+++ b/src/test/regress/expected/replica_identity.out
@@ -11,6 +11,7 @@ CREATE INDEX test_replica_identity_keyab ON test_replica_identity (keya, keyb);
CREATE UNIQUE INDEX test_replica_identity_keyab_key ON test_replica_identity (keya, keyb);
CREATE UNIQUE INDEX test_replica_identity_nonkey ON test_replica_identity (keya, nonkey);
CREATE INDEX test_replica_identity_hash ON test_replica_identity USING hash (nonkey);
+WARNING: hash indexes are not WAL-logged so they are not crash-safe and cannot be used on streaming standbys
CREATE UNIQUE INDEX test_replica_identity_expr ON test_replica_identity (keya, keyb, (3));
CREATE UNIQUE INDEX test_replica_identity_partial ON test_replica_identity (keya, keyb) WHERE keyb != '3';
-- default is 'd'/DEFAULT for user created tables
diff --git a/src/test/regress/expected/uuid.out b/src/test/regress/expected/uuid.out
index d907519918..4c4c092b35 100644
--- a/src/test/regress/expected/uuid.out
+++ b/src/test/regress/expected/uuid.out
@@ -114,6 +114,7 @@ SELECT COUNT(*) FROM guid1 WHERE guid_field >= '22222222-2222-2222-2222-22222222
-- btree and hash index creation test
CREATE INDEX guid1_btree ON guid1 USING BTREE (guid_field);
CREATE INDEX guid1_hash ON guid1 USING HASH (guid_field);
+WARNING: hash indexes are not WAL-logged so they are not crash-safe and cannot be used on streaming standbys
-- unique index test
CREATE UNIQUE INDEX guid1_unique_BTREE ON guid1 USING BTREE (guid_field);
-- should fail