From: | Martijn van Oosterhout <kleptog(at)svana(dot)org> |
---|---|
To: | Volkan YAZICI <yazicivo(at)ttnet(dot)net(dot)tr> |
Cc: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: intarray internals |
Date: | 2006-05-06 10:13:03 |
Message-ID: | 20060506101303.GB4413@svana.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general pgsql-hackers |
On Sat, May 06, 2006 at 12:46:01AM +0300, Volkan YAZICI wrote:
> [1]
> What's the function of execute() in _int_bool.c? As far as I can
> understand, some other functions (eg. execconsistent()) calling
> execute() with specific check methods (like checkcondition_bit()) but
> I still couldn't figure out which functionality execute() stands for.
It's a boolean expression evaluator. The query given is some kind of
boolean expression. That function is a recusive function that evaluates
the expression given certain information.
> [2]
> In g_int_decompress(), shouldn't
>
> if (ARRISVOID(in))
> PG_RETURN_POINTER(entry);
>
> part be replaced with
>
> if (ARRISVOID(in))
> {
> if (in != (ArrayType *) DatumGetPointer(entry->key))
> pfree(in);
> PG_RETURN_POINTER(entry)
> }
You very rarely need to pfree() anything explicitly. However, the code
has just tested if in is VOID. If it is, you obviously don't need to
free it. Or it may not be big enough to bother explicitly freeing.
>
> [3]
> Again, in g_int_decompress(), I couldn't figure out the functionality of
> below lines:
>
> din = ARRPTR(in);
> lenr = internal_size(din, lenin);
>
> for (i = 0; i < lenin; i += 2)
> for (j = din[i]; j <= din[i + 1]; j++)
> if ((!i) || *(dr - 1) != j)
> *dr++ = j;
>
> If I understand right, above loop, tries to reconstruct array with more
> smaller intervals - to be able to make more accurate predicates while
> digging into nodes. If so, AFAICS, g_int_compress() and
> g_int_decompress() methods can be (quite?) improved.
Well, it's probably trying to undo whatever g_int_compress. If you can
explain the algorithm used it will probably be clearer.
Have a nice day,
--
Martijn van Oosterhout <kleptog(at)svana(dot)org> http://svana.org/kleptog/
> From each according to his ability. To each according to his ability to litigate.
From | Date | Subject | |
---|---|---|---|
Next Message | Dany De Bontridder | 2006-05-06 10:33:02 | How to tune function plpgsql |
Previous Message | Volkan YAZICI | 2006-05-06 09:38:25 | Re: intarray internals |
From | Date | Subject | |
---|---|---|---|
Next Message | Andy Chambers | 2006-05-06 11:10:33 | Remove behaviour of postmaster -o |
Previous Message | Volkan YAZICI | 2006-05-06 09:38:25 | Re: intarray internals |