Search Postgresql Archives

Re: Pet Peeves

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



 
> On Saturday 31 January 2009 8:47:28 pm Adam Rich wrote:
> > On Thu, 29 Jan 2009 13:16:17 +0000
> >
> > Gregory Stark <stark(at)enterprisedb(dot)com> wrote:
> > > So, what do people say? Is Postgres perfect in your world or does
> it
> > > do some things which rub you the wrong way?
> >
> > I see all the major ones have already been mentioned, so here's some
> > minor ones.
> >
> > - lack of system-level and DDL triggers
> > - inability to limit triggers to certain columns
> > - inability to know the DML operation causing a trigger
> From:
> http://www.postgresql.org/docs/8.3/interactive/plpgsql-trigger.html
> TG_OP
> 
>     Data type text; a string of INSERT, UPDATE, or DELETE telling for
> which
> operation the trigger was fired.
> 
> This is also available in plpythonu, I don't know about the other PL's.
> 

Thanks, I knew this was available for python & perl PLs, I wasn't aware
it was I plpgsql too.  Still, it would be nice to have something akin to
oracle's   IF(UPDATING('col_name')) THEN


> > - date_part/extract returning floats instead of integer
> Maybe this what you are looking for ?:
> http://www.postgresql.org/docs/8.3/interactive/datatype-datetime.html
> Note:  When timestamp values are stored as double precision floating-
> point
> numbers (currently the default), the effective limit of precision might
> be less
> than 6. timestamp values are stored as seconds before or after midnight
> 2000-01-01. Microsecond precision is achieved for dates within a few
> years of
> 2000-01-01, but the precision degrades for dates further away. When
> timestamp
> values are stored as eight-byte integers (a compile-time option),
> microsecond
> precision is available over the full range of values. However eight-
> byte
> integer timestamps have a more limited range of dates than shown above:
> from
> 4713 BC up to 294276 AD. The same compile-time option also determines
> whether
> time and interval values are stored as floating-point or eight-byte
> integers.
> In the floating-point case, large interval values degrade in precision
> as the
> size of the interval increases.
> 

Nope, I mean if you use date_part to extract a piece of a date, you 
get a float instead of an integer.  It trips me up everytime I try 
something like this:

select * from table 
where (weekmask & (1 << date_part('DOW', $1))) <> 0

To my surprise, the << operator fails because it requires an integer
argument, but date_part provides only a double floating point.

I realize this is documented as intended behavior, but why?  Is there
any scenario where DOW (or day, year, hour, or *any* field really)
would be returning a fractional number?  






> > - parts of the SQL statement (e.g. 'for update of') requiring table
> > 	aliases when present instead of table names.
> > - lack of queryable high-water marks useful for tuning
> > - lack of an auto-tuner, for that matter.
> > - inability to log (e.g. long-running queries) to a table
> > - lack of custom session-level variables (without editing
> postgresql.conf)
> > - lack of autonomous transactions
> 
> 
> 
> --
> Adrian Klaver
> aklaver@xxxxxxxxxxx


-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux