]> granicus.if.org Git - postgresql/commitdiff
Issue a warning during the creation of hash indexes
authorBruce Momjian <bruce@momjian.us>
Wed, 10 Sep 2014 20:54:40 +0000 (16:54 -0400)
committerBruce Momjian <bruce@momjian.us>
Wed, 10 Sep 2014 20:54:47 +0000 (16:54 -0400)
src/backend/commands/indexcmds.c
src/test/regress/expected/create_index.out
src/test/regress/expected/enum.out
src/test/regress/expected/macaddr.out
src/test/regress/expected/replica_identity.out
src/test/regress/expected/uuid.out

index fdfa6ca4f5cd3be2db624e1c709ad037dc700b40..1afe02bd85ad445f99129b0c1d9c96b2425b7e0e 100644 (file)
@@ -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),
index f6f551632117d8f3dfdde378e8332681102dd6a1..e68f9c288d134618a1398fbbb6e06c5f2952eb0a 100644 (file)
@@ -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
index 36826428a07107b7289ce44ed608e4a15cbfcb93..44f1c798488318cd677fd6b0d9aea8a4800df599 100644 (file)
@@ -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   
 --------
index 50d0369139a84c00d2ca58c887621097d48281ea..4c8dec05633145554eb66d1ac7ca1bae382b81ea 100644 (file)
@@ -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       
 ----+-------------------+-------------------
index 96dc98bf0826c8589db46f21bcd2fc4d9d150863..48426e8d92b37d1519fd9c355752aeda55275a85 100644 (file)
@@ -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
index d9075199180a14569221f9ee2f724f3e102da3eb..4c4c092b3584b191382cbc5a52d90c4be73d5d96 100644 (file)
@@ -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