Re: [HACKERS] Re: [GENERAL] Update of bitmask type - Mailing list pgsql-hackers

From Adriaan Joubert
Subject Re: [HACKERS] Re: [GENERAL] Update of bitmask type
Date
Msg-id 37EA5361.59EC106D@albourne.com
Whole thread Raw
In response to Re: [HACKERS] Re: [GENERAL] Update of bitmask type  (The Hermit Hacker <scrappy@hub.org>)
List pgsql-hackers
Thomas asked how I was going to implement bitstring comparisons.
> 
> How do you handle the length and ordering issues? Is x'01' greater
> than x'1' since it is longer? And if you have a 16-bit bit column, how
> does it look internally if you assign x'01' rather than x'0001'?

I had a look in my freshly down-loaded draft standard. On page 336 it
says:
        7) The comparison of two bit string values, X and Y, is
determined           by comparison of their bits with the same ordinal position.           If Xi and Yi are the values
ofthe i-th bits of X and Y,           respectively, and if LX is the length in bits of X and LY is           the length
inbits of Y, then:
 
           a) X is equal to Y if and only if X = LY and Xi = Yi for all
i.

? I presume this should be 'LX=LY' ?? Anyway, this means that b'01' <>
b'0010'.
           b) X is less than Y if and only if:
             i) LX < LY and Xi = Yi for all i less than or equal to LX;
or
            ii) Xi = Yi for all i < n and Xn = 0 and Yn = 1 for some n
less                than or equal to the minimum of LX and LY.

b) seems to imply, rather bizarrely in my opinion, that
B'001100' < B'10'
  as the second bit in B'10' is 1 and in B'001100' it is 0.
  Surely I must be reading this wrong? 
  On the other hand, this would be a type of lexicographical ordering,
so   perhaps it is not so dumb. Comments?

Adriaan


pgsql-hackers by date:

Previous
From: InfraRED/Veres Tibor
Date:
Subject: Re: [HACKERS] [GENERAL] when are indexes used?
Next
From: Andreas Zeugswetter
Date:
Subject: Re: [HACKERS] [GENERAL] when are indexes used?