From: | Neil Conway <neilc(at)samurai(dot)com> |
---|---|
To: | pgsql-patches <pgsql-patches(at)postgresql(dot)org> |
Subject: | optimize md5_text |
Date: | 2005-02-23 07:14:27 |
Message-ID: | 421C2D53.1020207@samurai.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-patches |
This patch optimizes the md5_text() function (which is used to implement
the md5() SQL-level function). The old code did the following:
1. de-toast the datum
2. convert it to a cstring via textout()
3. get the length of the cstring via strlen()
Since we are treating the datum context as a blob of binary data, the
latter two steps are unnecessary. Once the data has been detoasted, we
can just use it as-is, and derive its length from the varlena metadata.
This patch improves some run-of-the-mill md5() computations by just
under 10% in my limited tests, and passes the regression tests.
I also noticed that md5_text() wasn't checking the return value of
md5_hash(); encountering OOM at precisely the right moment could result
in returning a random md5 hash. This patch corrects that. A better fix
would be to make md5_hash() only return on success (and/or allocate via
palloc()), but since it's used in the frontend as well I don't see an
easy way to do that.
Barring any objections, I'll apply this to HEAD tomorrow.
-Neil
Attachment | Content-Type | Size |
---|---|---|
md5_opt-3.patch | text/x-patch | 2.3 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Greg Sabino Mullane | 2005-02-23 12:28:20 | New FAQ questions. minor fixes |
Previous Message | Tatsuo Ishii | 2005-02-23 02:44:29 | Re: UTF8 or Unicode |