Skip site navigation (1) Skip section navigation (2)

optimize md5_text

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 (view raw or flat)
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: md5_opt-3.patch
Description: text/x-patch (2.3 KB)

Responses

pgsql-patches by date

Next:From: Greg Sabino MullaneDate: 2005-02-23 12:28:20
Subject: New FAQ questions. minor fixes
Previous:From: Tatsuo IshiiDate: 2005-02-23 02:44:29
Subject: Re: UTF8 or Unicode

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group