What stats cells overlap with this ND_BOX? Put the lowest cell addresses in ND_IBOX->min and the highest in ND_IBOX->max.
Definition at line 631 of file gserialized_estimate.c.
References ND_STATS_T::extent, ND_BOX_T::max, ND_IBOX_T::max, ND_BOX_T::min, ND_IBOX_T::min, MIN_DIMENSION_WIDTH, nd_box_to_json(), ND_STATS_T::ndims, ND_STATS_T::size, and TRUE.
Referenced by compute_gserialized_stats_mode(), estimate_join_selectivity(), and estimate_selectivity().
638 memset(nd_ibox, 0,
sizeof(
ND_IBOX));
641 for ( d = 0; d < nd_stats->
ndims; d++ )
645 double width = smax - smin;
653 int size = (int)roundf(nd_stats->
size[d]);
656 nd_ibox->
min[d] = floor(size * (nd_box->
min[d] - smin) / width);
657 nd_ibox->
max[d] = floor(size * (nd_box->
max[d] - smin) / width);
659 POSTGIS_DEBUGF(5,
" stats: dim %d: min %g: max %g: width %g", d, smin, smax, width);
660 POSTGIS_DEBUGF(5,
" overlap: dim %d: (%d, %d)", d, nd_ibox->
min[d], nd_ibox->
max[d]);
663 nd_ibox->
min[d] = Max(nd_ibox->
min[d], 0);
664 nd_ibox->
max[d] = Min(nd_ibox->
max[d], size - 1);
#define MIN_DIMENSION_WIDTH
Minimum width of a dimension that we'll bother trying to compute statistics on.
N-dimensional box index type.
static char * nd_box_to_json(const ND_BOX *nd_box, int ndims)
Convert an ND_BOX to a JSON string for printing.