@@ -221,6 +221,31 @@ SELECT drop_partitions('calamity.part_test', true);
221
221
(1 row)
222
222
223
223
DELETE 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
224
249
/* check function build_range_condition() */
225
250
SELECT build_range_condition(NULL, 'val', 10, 20);/* not ok */
226
251
ERROR: 'partition_relid' should not be NULL
@@ -245,15 +270,15 @@ SELECT build_range_condition('calamity.part_test', 'val', NULL, 10);/* OK */
245
270
(1 row)
246
271
247
272
/* 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 */
249
274
ERROR: '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 */
251
276
ERROR: '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 */
253
278
ERROR: 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 */
255
280
ERROR: 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 */
257
282
validate_interval_value
258
283
-------------------------
259
284
t