@@ -221,6 +221,31 @@ SELECT drop_partitions('calamity.part_test', true);
221221(1 row)
222222
223223DELETE FROM calamity.part_test;
224+ /* check function build_hash_condition() */
225+ SELECT build_hash_condition('int4', 'val', 10, 1);
226+ build_hash_condition
227+ -------------------------------------------------
228+ public.get_hash_part_idx(hashint4(val), 10) = 1
229+ (1 row)
230+
231+ SELECT build_hash_condition('text', 'val', 10, 1);
232+ build_hash_condition
233+ -------------------------------------------------
234+ public.get_hash_part_idx(hashtext(val), 10) = 1
235+ (1 row)
236+
237+ SELECT build_hash_condition('int4', 'val', 1, 1);
238+ ERROR: 'partition_index' must be lower than 'partitions_count'
239+ SELECT build_hash_condition('int4', 'val', 10, 20);
240+ ERROR: 'partition_index' must be lower than 'partitions_count'
241+ SELECT build_hash_condition('text', 'val', 10, NULL) IS NULL;
242+ ?column?
243+ ----------
244+ t
245+ (1 row)
246+
247+ SELECT build_hash_condition('calamity.part_test', 'val', 10, 1);
248+ ERROR: no hash function for type calamity.part_test
224249/* check function build_range_condition() */
225250SELECT build_range_condition(NULL, 'val', 10, 20); /* not ok */
226251ERROR: 'partition_relid' should not be NULL
@@ -245,15 +270,15 @@ SELECT build_range_condition('calamity.part_test', 'val', NULL, 10); /* OK */
245270(1 row)
246271
247272/* check function validate_interval_value() */
248- SELECT validate_interval_value(NULL, 2, '1 mon'); /* not ok */
273+ SELECT validate_interval_value(NULL, 2, '1 mon'); /* not ok */
249274ERROR: 'atttype' should not be NULL
250- SELECT validate_interval_value(1186 , NULL, '1 mon'); /* not ok */
275+ SELECT validate_interval_value('interval'::regtype , NULL, '1 mon'); /* not ok */
251276ERROR: 'parttype' should not be NULL
252- SELECT validate_interval_value(23 , 2, '1 mon'); /* not ok */
277+ SELECT validate_interval_value('int4'::regtype , 2, '1 mon'); /* not ok */
253278ERROR: invalid input syntax for integer: "1 mon"
254- SELECT validate_interval_value(1186 , 1, '1 mon'); /* not ok */
279+ SELECT validate_interval_value('interval'::regtype , 1, '1 mon'); /* not ok */
255280ERROR: interval should be NULL for HASH partitioned table
256- SELECT validate_interval_value(1186 , 2, NULL); /* OK */
281+ SELECT validate_interval_value('interval'::regtype , 2, NULL); /* OK */
257282 validate_interval_value
258283-------------------------
259284 t
0 commit comments