Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 819B564FCEA for ; Mon, 15 Sep 2008 23:45:30 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 15768-03 for ; Mon, 15 Sep 2008 23:45:27 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from wx-out-0506.google.com (wx-out-0506.google.com [66.249.82.226]) by postgresql.org (Postfix) with ESMTP id 6ACC564FCC6 for ; Mon, 15 Sep 2008 23:45:26 -0300 (ADT) Received: by wx-out-0506.google.com with SMTP id i26so995200wxd.28 for ; Mon, 15 Sep 2008 19:45:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:in-reply-to:mime-version:content-type:references; bh=qQF2mdcJ39TwVaeKdaFlcEQLx8Vpn7potpFHRhDhXsk=; b=erDzvZDJdWbZV5VA9jyR29mlqp9Xn4YvR1rVl2zgRjWkThsNeB3R6v0+/zFA2oUE1b fh77fk9aw9rhF3ff9UVOYJEXoXRXT32oSrOXtJEXfGAA7gqMDWlKSJpVwigPhFUkWNk9 JpI3yoxSxW2uaYZrc6aDWlskotkLFTlwMZEiA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:in-reply-to:mime-version :content-type:references; b=psb72Mg+SF7St9xjNCD7osgc2PWSoToxfMnhY9urbiWBeioGUW6ZkmNVtDZq59qbiK fKxgTiTF4PPZ8TJWClrcnudzdznFeQG8aUS3sJR0TmFuo+j5hPlTAzSCnTO3tc/PJQbX x1Blg1fuCYgiK1tVZ82mf9ZH4DBvh2Saa5IhU= Received: by 10.70.92.18 with SMTP id p18mr448766wxb.87.1221533125278; Mon, 15 Sep 2008 19:45:25 -0700 (PDT) Received: by 10.70.25.10 with HTTP; Mon, 15 Sep 2008 19:45:25 -0700 (PDT) Message-ID: Date: Mon, 15 Sep 2008 19:45:25 -0700 From: "Ryan Bradetich" To: pgsql-patches Subject: Re: [PgFoundry] Unsigned Data Types [1 of 2] In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_18602_16242396.1221533125273" References: <3073cc9b0809061341q5c747488i85491e4c8e2420ba@mail.gmail.com> <3073cc9b0809062330o62fd74dax74b1730cedc0fbb9@mail.gmail.com> <3073cc9b0809082254g789a7f14x45e9d416925b1057@mail.gmail.com> <22555.1220962305@sss.pgh.pa.us> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/128 X-Sequence-Number: 7143 ------=_Part_18602_16242396.1221533125273 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Message Resend. I forgot to spit the attachments so they did not make it through the list. Patch 1 of 2 : Base uint type. Patch 2 of 2 : Regression tests. - Ryan On Mon, Sep 15, 2008 at 8:13 AM, Ryan Bradetich wrote: > Hello Jaime, > > I have the code and regression tests updated to solve the problems you initially > discovered. After code reading, stepping through with the debugger, and > help from RhodiumToad on irc I was able to implement new restrict > selective estimation > functions for the uint4 vs int4 data types. The uint1 vs int4 and > uint2 vs int4 data > types did not require a custom restrict selective estimation function. > > Here is an updated base and tests tar packages with these changes in place. I > still have better code comments on my TODO list. I wanted to get > updated code out > to see if there are other problems the unsigned data type fails to > address properly. > > I will work on better commenting the code tonight and tomorrow. > > Thanks again for your review and testing! > > - Ryan > ------=_Part_18602_16242396.1221533125273 Content-Type: application/x-bzip2; name=uint-base-v2.tar.bz2 Content-Transfer-Encoding: base64 X-Attachment-Id: f_fl5x8shp2 Content-Disposition: attachment; filename=uint-base-v2.tar.bz2 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 ------=_Part_18602_16242396.1221533125273--