/* *GettheoriginalDatumfromthestoreddatum.Onleafentries,the *lowerandupperboundarethesame.Wejustgrabthelowerboundand *returnit.
*/ switch (tinfo->t)
{ case gbt_t_bool:
datum = BoolGetDatum(*(bool *) entry->key); break; case gbt_t_int2:
datum = Int16GetDatum(*(int16 *) entry->key); break; case gbt_t_int4:
datum = Int32GetDatum(*(int32 *) entry->key); break; case gbt_t_int8:
datum = Int64GetDatum(*(int64 *) entry->key); break; case gbt_t_oid: case gbt_t_enum:
datum = ObjectIdGetDatum(*(Oid *) entry->key); break; case gbt_t_float4:
datum = Float4GetDatum(*(float4 *) entry->key); break; case gbt_t_float8:
datum = Float8GetDatum(*(float8 *) entry->key); break; case gbt_t_date:
datum = DateADTGetDatum(*(DateADT *) entry->key); break; case gbt_t_time:
datum = TimeADTGetDatum(*(TimeADT *) entry->key); break; case gbt_t_ts:
datum = TimestampGetDatum(*(Timestamp *) entry->key); break; case gbt_t_cash:
datum = CashGetDatum(*(Cash *) entry->key); break; default:
datum = entry->key;
}
for (i = 1; i < numranges; i++)
{
cur = (GBT_NUMKEY *) DatumGetPointer((entryvec->vector[i].key));
c.lower = &cur[0];
c.upper = &cur[tinfo->size]; /* if out->lower > cur->lower, adopt cur as lower */ if (tinfo->f_gt(o.lower, c.lower, flinfo))
memcpy(unconstify(GBT_NUMKEY *, o.lower), c.lower, tinfo->size); /* if out->upper < cur->upper, adopt cur as upper */ if (tinfo->f_lt(o.upper, c.upper, flinfo))
memcpy(unconstify(GBT_NUMKEY *, o.upper), c.upper, tinfo->size);
}
for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
{
arr[i].t = (GBT_NUMKEY *) DatumGetPointer((entryvec->vector[i].key));
arr[i].i = i;
}
qsort_arg(&arr[FirstOffsetNumber], maxoff - FirstOffsetNumber + 1, sizeof(Nsrt), (qsort_arg_comparator) tinfo->f_cmp, flinfo);
/* We do simply create two parts */
for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
{ if (i <= (maxoff - FirstOffsetNumber + 1) / 2)
{
gbt_num_bin_union(&v->spl_ldatum, arr[i].t, tinfo, flinfo);
v->spl_left[v->spl_nleft] = arr[i].i;
v->spl_nleft++;
} else
{
gbt_num_bin_union(&v->spl_rdatum, arr[i].t, tinfo, flinfo);
v->spl_right[v->spl_nright] = arr[i].i;
v->spl_nright++;
}
}
return v;
}
Messung V0.5 in Prozent
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.12Angebot
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-08-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.