Re: Double sorting split patch

Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>

From: Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>
To: Alexander Korotkov <aekorotkov@gmail.com>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2011-10-04T08:12:57Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Fix contrib/seg's GiST picksplit method.

  2. Some copy editing of pg_read_binary_file() patch.

On 22.09.2011 22:12, Alexander Korotkov wrote:
> Patch without that dead code is attached.

Thanks.

Can you elaborate the consider-split algorithm? The criteria to select 
the new split over the previously selected one is this:
> ! 		/*
> ! 		 * If ratio is acceptable, we should compare current split with
> ! 		 * previously selected one. If no split was selected then we select
> ! 		 * current anyway. Between splits of one dimension we search for
> ! 		 * minimal overlap (allowing negative values) and minimal ration
> ! 		 * (between same overlaps. We switch dimension if find less overlap
> ! 		 * (non-negative) or less range with same overlap.
> ! 		 */
> ! 		range = diminfo->upper - diminfo->lower;
> ! 		overlap = ((leftUpper) - (rightLower)) / range;
> ! 		if (context->first ||
> ! 			(context->dim == dimNum &&
> ! 			 (overlap < context->overlap ||
> ! 			  (overlap == context->overlap && ratio > context->ratio))) ||
> ! 			(context->dim != dimNum &&
> ! 			 ((range > context->range &&
> ! 			   non_negative(overlap) <= non_negative(context->overlap)) ||
> ! 			  non_negative(overlap) < non_negative(context->overlap)))
> ! 			)
> ! 		{

Why are negative overlaps handled differently across dimensions and 
within the same dimension? Your considerSplit algorithm in the SYRCoSE 
2011 paper doesn't seem to make that distinction.

-- 
   Heikki Linnakangas
   EnterpriseDB   http://www.enterprisedb.com