summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--contrib/btree_gist/btree_utils_var.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/contrib/btree_gist/btree_utils_var.c b/contrib/btree_gist/btree_utils_var.c
index 57d12e4cda2..7e6a3c3508a 100644
--- a/contrib/btree_gist/btree_utils_var.c
+++ b/contrib/btree_gist/btree_utils_var.c
@@ -233,14 +233,13 @@ gbt_var_node_truncate(const GBT_VARKEY *node, int32 cpf_length, const gbtree_vin
void
gbt_var_bin_union(Datum *u, GBT_VARKEY *e, const gbtree_vinfo *tinfo)
{
-
- GBT_VARKEY *nk = NULL;
- GBT_VARKEY *tmp = NULL;
- GBT_VARKEY_R nr;
GBT_VARKEY_R eo = gbt_var_key_readable(e);
+ GBT_VARKEY_R nr;
if (eo.lower == eo.upper) /* leaf */
{
+ GBT_VARKEY *tmp;
+
tmp = gbt_var_leaf2node(e, tinfo);
if (tmp != e)
eo = gbt_var_key_readable(tmp);
@@ -248,25 +247,26 @@ gbt_var_bin_union(Datum *u, GBT_VARKEY *e, const gbtree_vinfo *tinfo)
if (DatumGetPointer(*u))
{
-
GBT_VARKEY_R ro = gbt_var_key_readable((GBT_VARKEY *) DatumGetPointer(*u));
+ bool update = false;
+
+ nr.lower = ro.lower;
+ nr.upper = ro.upper;
if ((*tinfo->f_cmp) ((bytea *) ro.lower, (bytea *) eo.lower) > 0)
{
nr.lower = eo.lower;
- nr.upper = ro.upper;
- nk = gbt_var_key_copy(&nr, TRUE);
+ update = true;
}
if ((*tinfo->f_cmp) ((bytea *) ro.upper, (bytea *) eo.upper) < 0)
{
nr.upper = eo.upper;
- nr.lower = ro.lower;
- nk = gbt_var_key_copy(&nr, TRUE);
+ update = true;
}
- if (nk)
- *u = PointerGetDatum(nk);
+ if (update)
+ *u = PointerGetDatum(gbt_var_key_copy(&nr, TRUE));
}
else
{