v1-0001-refactor-function-range_leftover_internal.patch
text/x-patch
Filename: v1-0001-refactor-function-range_leftover_internal.patch
Type: text/x-patch
Part: 0
Message:
Re: SQL:2011 application time
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch v1-0001
Subject: refactor function range_leftover_internal
| File | + | − |
|---|---|---|
| src/backend/utils/adt/rangetypes.c | 31 | 24 |
| src/include/utils/rangetypes.h | 2 | 3 |
From 5cdd99f9a63d381985541b0df539c2bb92ef7276 Mon Sep 17 00:00:00 2001
From: pgaddict <jian.universality@gmail.com>
Date: Sat, 21 Oct 2023 17:18:50 +0800
Subject: [PATCH v1 1/1] refactor function range_leftover_internal
renaming variable.
better comment.
---
src/backend/utils/adt/rangetypes.c | 55 +++++++++++++++++-------------
src/include/utils/rangetypes.h | 5 ++-
2 files changed, 33 insertions(+), 27 deletions(-)
diff --git a/src/backend/utils/adt/rangetypes.c b/src/backend/utils/adt/rangetypes.c
index d4e17323..a5a34450 100644
--- a/src/backend/utils/adt/rangetypes.c
+++ b/src/backend/utils/adt/rangetypes.c
@@ -1207,47 +1207,54 @@ range_split_internal(TypeCacheEntry *typcache, const RangeType *r1, const RangeT
}
/*
- * range_leftover_internal - Sets output1 and output2 to the remaining parts of r1
- * after subtracting r2, or if nothing is left then to the empty range.
- * output1 will always be "before" r2 and output2 "after".
+ * Sets leftoverRange and rightoverRange to the remaining parts of oldRange
+ * after subtracting targetRange, or if nothing is left then to the empty range.
+ * leftoverRange will always be "before" targetRange and rightoverRange "after" targetRange.
*/
void
-range_leftover_internal(TypeCacheEntry *typcache, const RangeType *r1,
- const RangeType *r2, RangeType **output1, RangeType **output2)
+range_leftover_internal(TypeCacheEntry *typcache, const RangeType *oldRange,
+ const RangeType *targetRange, RangeType **leftoverRange, RangeType **rightoverRange)
{
- RangeBound lower1,
- lower2;
- RangeBound upper1,
- upper2;
- bool empty1,
- empty2;
+ RangeBound lower_oldRange,
+ lower_targetRange;
+ RangeBound upper_oldRange,
+ upper_targetRange;
+ bool oldRange_is_empty,
+ targetRange_is_empty;
- range_deserialize(typcache, r1, &lower1, &upper1, &empty1);
- range_deserialize(typcache, r2, &lower2, &upper2, &empty2);
+ range_deserialize(typcache, oldRange, &lower_oldRange, &upper_oldRange, &oldRange_is_empty);
+ range_deserialize(typcache, targetRange, &lower_targetRange, &upper_targetRange, &targetRange_is_empty);
- if (range_cmp_bounds(typcache, &lower1, &lower2) < 0)
+ /*
+ * FOR PORTION OF. upper_targetRange, if oldRange do not overlaps with targetRangeType.
+ * So these two range must overlaps, that means both range should not be empty.
+ *
+ */
+ Assert(!oldRange_is_empty);
+ Assert(!targetRange_is_empty);
+
+ if (range_cmp_bounds(typcache, &lower_oldRange, &lower_targetRange) < 0)
{
- lower2.inclusive = !lower2.inclusive;
- lower2.lower = false;
- *output1 = make_range(typcache, &lower1, &lower2, false, NULL);
+ lower_targetRange.inclusive = !lower_targetRange.inclusive;
+ lower_targetRange.lower = false;
+ *leftoverRange = make_range(typcache, &lower_oldRange, &lower_targetRange, false, NULL);
}
else
{
- *output1 = make_empty_range(typcache);
+ *leftoverRange = make_empty_range(typcache);
}
- if (range_cmp_bounds(typcache, &upper1, &upper2) > 0)
+ if (range_cmp_bounds(typcache, &upper_oldRange, &upper_targetRange) > 0)
{
- upper2.inclusive = !upper2.inclusive;
- upper2.lower = true;
- *output2 = make_range(typcache, &upper2, &upper1, false, NULL);
+ upper_targetRange.inclusive = !upper_targetRange.inclusive;
+ upper_targetRange.lower = true;
+ *rightoverRange = make_range(typcache, &upper_targetRange, &upper_oldRange, false, NULL);
}
else
{
- *output2 = make_empty_range(typcache);
+ *rightoverRange = make_empty_range(typcache);
}
}
-
/* range -> range aggregate functions */
Datum
diff --git a/src/include/utils/rangetypes.h b/src/include/utils/rangetypes.h
index 48ee2deb..f67ae402 100644
--- a/src/include/utils/rangetypes.h
+++ b/src/include/utils/rangetypes.h
@@ -164,8 +164,7 @@ extern RangeType *make_empty_range(TypeCacheEntry *typcache);
extern bool range_split_internal(TypeCacheEntry *typcache, const RangeType *r1,
const RangeType *r2, RangeType **output1,
RangeType **output2);
-extern void range_leftover_internal(TypeCacheEntry *typcache, const RangeType *r1,
- const RangeType *r2, RangeType **output1,
- RangeType **output2);
+extern void range_leftover_internal(TypeCacheEntry *typcache, const RangeType *oldRange,
+ const RangeType *targetRange, RangeType **leftoverRange, RangeType **rightoverRange);
#endif /* RANGETYPES_H */
--
2.34.1