Re: texteq/byteaeq: avoid detoast [REVIEW] - Mailing list pgsql-hackers

From Noah Misch
Subject Re: texteq/byteaeq: avoid detoast [REVIEW]
Date
Msg-id 20110117152827.GB19587@tornado.leadboat.com
Whole thread Raw
In response to Re: texteq/byteaeq: avoid detoast [REVIEW]  (Magnus Hagander <magnus@hagander.net>)
List pgsql-hackers
On Mon, Jan 17, 2011 at 11:05:09AM +0100, Magnus Hagander wrote:
> On Mon, Jan 17, 2011 at 09:13, Itagaki Takahiro
> <itagaki.takahiro@gmail.com> wrote:
> > 2011/1/17 KaiGai Kohei <kaigai@ak.jp.nec.com>:
> >> Are you talking about an idea to apply toast id as an alternative key?
> >
> > No, probably. I'm just talking about whether "diff -q A.txt B.txt" and
> > "diff -q A.gz ?B.gz" always returns the same result or not.

Interesting.

> > ... I found it depends on version of gzip. So, if we use such logic,
> > we cannot improve toast compression logic because the data is migrated
> > by pg_upgrade.
> 
> Yeah, that might be a bad tradeoff.
> 
> I wonder if we can trust the *equality* test, but not the inequality?
> E.g. if compressed(A) == compressed(B) we know they're the same, but
> if compressed(A) != compressed(B) we don't know they're not they still
> might be.

Exactly.

> I guess with two different versions or even completely different
> algorithms we could end up with exactly the same compressed value for
> different plaintexts (it's not a cryptographic hash after all), so
> that's probably not an acceptable comparison either.

It's safe to assume that will never happen.  If compressed(A) == compressed(B)
when A != B, we would have a lossy compression algorithm.

As you say, though, _inequality_ implies nothing for an arbitrary decompressor.
One can trivially construct many inputs to the zlib decompressor that yield the
same output.  "gzip -1" ... "gzip -9" do this, for example.  So the main win
here would come if we tightly controlled the compressor, such that we could
infer something from compressed(A) != compressed(B).  That would be an
intriguing path to explore.

nm


pgsql-hackers by date:

Previous
From: Noah Misch
Date:
Subject: Re: texteq/byteaeq: avoid detoast [REVIEW]
Next
From: Robert Haas
Date:
Subject: Re: Replication logging