[ADMIN] bizarre AGE behaviour

2004-03-03 Thread DHS Webmaster
Hello all,
Many thanks for this fine product.
We began encountering some unexpected date related errors this week and
after further investigation found the following. We use the postgres AGE
function in a custom function. The AGE function has begun to throw some
unanticipated results back. This has not happened before and my first
guess is that it may be leap year related. Here are some examples.

This is good...
network=# select age('04-01-04','03-01-04');
  age
---
 1 mon
(1 row)

This isn't...
network=# select age('05-01-04','03-01-04');
 age
-
 1 mon 30 days 23:00
(1 row)

Now it gets really strange..
network=# select age('06-01-04','04-01-04');
 age
-
 1 mon 29 days 23:00
(1 row)

This may have been addressed in the past (I subscribe to this list) and
I just missed it, but is there a simple fix for this problem?
Thanks.
-- 
Bill MacArthur
Webmaster
The DHS Club, Inc.
The Best Is Yet To Come!

---(end of broadcast)---
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]


Re: [ADMIN] bizarre AGE behaviour

2004-03-03 Thread Steve Crawford
On Wednesday 03 March 2004 9:19 am, DHS Webmaster wrote:
> We began encountering some unexpected date related errors this 
week...

> This is good...
> network=# select age('04-01-04','03-01-04');
>   age
> ---
>  1 mon
> (1 row)
>
> This isn't...
> network=# select age('05-01-04','03-01-04');
>  age
> -
>  1 mon 30 days 23:00
> (1 row)
>
> Now it gets really strange..
> network=# select age('06-01-04','04-01-04');
>  age
> -
>  1 mon 29 days 23:00
> (1 row)
>
> This may have been addressed in the past (I subscribe to this list)
> and I just missed it, but is there a simple fix for this problem?
> Thanks.

It was originally addressed long in the past (1784, Paris by Benjamin 
Franklin): http://webexhibits.org/daylightsaving/

US Daylight Saving Time starts this year on April 4 when 0200 jumps to 
0300. The answers PostgreSQL gave are correct.

Cheers,
Steve


---(end of broadcast)---
TIP 6: Have you searched our list archives?

   http://archives.postgresql.org


Re: [ADMIN] bizarre AGE behaviour

2004-03-03 Thread Tom Lane
Steve Crawford <[EMAIL PROTECTED]> writes:
> US Daylight Saving Time starts this year on April 4 when 0200 jumps to 
> 0300. The answers PostgreSQL gave are correct.

I suspect what the OP wants is non-timezone-aware behavior, which he
could get by casting the inputs of age() to timestamp without time
zone.  As written the system is preferring to interpret them as
timestamp with time zone.

Also, if what's really wanted is just resolution to the day level,
the date subtraction operator might be a lot better choice than
age() anyway.

regression=# select '06-01-04'::date - '04-01-04'::date;
 ?column?
--
   61
(1 row)


regards, tom lane

---(end of broadcast)---
TIP 9: the planner will ignore your desire to choose an index scan if your
  joining column's datatypes do not match


[ADMIN] Multiple inserts without COPY

2004-03-03 Thread Mark Lubratt
Hello!

I have a routine in my application where I have the potential to 
generate hundreds of inserts or deletes at one time.  Right now, I 
issue each insert and delete separately.  I'm hoping there might be a 
way of generating a single SQL statement to send to the backend for 
each.  The deletes look something like

delete from CL where CL_id = i

where i could be a list of several hundred integers.  Again, right now 
I iterate through the list.

The inserts might look like

insert into CL (CO_id, PE_ID) values (j, k)

where j and k are also integers and I could have a list of several 
hundred pairs of j and k.

MySQL has a multiple insert feature where you simply append a bunch of 
(j, k)'s separated by a comma.  Does PostgreSQL have anything like 
this?  I was hoping I might be able to use COPY, but I see that's 
really only for psql.

Are there any options?  Or, do I simply send a bunch of queries?

Thanks!
Mark
---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?
  http://www.postgresql.org/docs/faqs/FAQ.html


Re: [ADMIN] Multiple inserts without COPY

2004-03-03 Thread Tom Lane
Mark Lubratt <[EMAIL PROTECTED]> writes:
> The deletes look something like
> delete from CL where CL_id = i
> where i could be a list of several hundred integers.  Again, right now 
> I iterate through the list.

Consider
delete from CL where CL_id in (i,j,k,...);
If you have hundreds of target values, it might be better to put them in
a temp table and go
delete from CL where CL_id in (select id from temp_table);
The latter should be reasonably quick in 7.4, but be warned that it'll
suck in prior releases.

> MySQL has a multiple insert feature where you simply append a bunch of 
> (j, k)'s separated by a comma.  Does PostgreSQL have anything like 
> this?

That is SQL-spec syntax, but we've not gotten around to implementing it.
COPY is a lot faster for bulk inserts.

> I was hoping I might be able to use COPY, but I see that's 
> really only for psql.

Huh?  You can use COPY FROM STDIN in most of our client libraries,
certainly so with libpq.  What are you using?

regards, tom lane

---(end of broadcast)---
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])


Re: [ADMIN] Multiple inserts without COPY

2004-03-03 Thread Mark Lubratt
On Mar 3, 2004, at 10:22 PM, Tom Lane wrote:

Mark Lubratt <[EMAIL PROTECTED]> writes:
The deletes look something like
delete from CL where CL_id = i
where i could be a list of several hundred integers.  Again, right now
I iterate through the list.
Consider
	delete from CL where CL_id in (i,j,k,...);
If you have hundreds of target values, it might be better to put them 
in
a temp table and go
	delete from CL where CL_id in (select id from temp_table);
The latter should be reasonably quick in 7.4, but be warned that it'll
suck in prior releases.

Yeah, that's what I was looking for!  I thought I might be able to do 
that.  Cool.

I was hoping I might be able to use COPY, but I see that's
really only for psql.
Huh?  You can use COPY FROM STDIN in most of our client libraries,
certainly so with libpq.  What are you using?
Actually, I'm using REALbasic.  All the communication is happening 
through a TCP connection.  I tried emulating what the command might 
look like in pgAdmin.  But, of course, after the semi-colon, the parser 
got confused when it hit the actual data.  I tried:

COPY MyTable (id, val) FROM STDIN;
2   Hello There!
\.
It choked at the 2.  I was just trying to see if the backend suspended 
parsing and would just start copying like psql does.  But, I guess not. 
 How does psql shovel a COPY at the backend?

Oooh.  I just remembered.  There is a new method in the REALbasic 
classes that provide the PostgreSQL functionality.  I'll have to check 
it out...

I was hoping that there might be a syntax trick  with INs or something 
like the delete command above.  Something that might expand in the 
parser to do what I want to do.

Thanks!

Mark

---(end of broadcast)---
TIP 8: explain analyze is your friend


Re: [ADMIN] Multiple inserts without COPY

2004-03-03 Thread Tom Lane
Mark Lubratt <[EMAIL PROTECTED]> writes:
>> Huh?  You can use COPY FROM STDIN in most of our client libraries,
>> certainly so with libpq.  What are you using?

> Actually, I'm using REALbasic.

Um.  I have no idea what sort of support they have, but you do need a
client interface library that knows about the COPY data protocol.
Typically there will be separate API calls for pushing COPY data through
after you issue the COPY command.

regards, tom lane

---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faqs/FAQ.html


Re: [ADMIN] Multiple inserts without COPY

2004-03-03 Thread Mark Lubratt
On Mar 3, 2004, at 11:20 PM, Tom Lane wrote:

Mark Lubratt <[EMAIL PROTECTED]> writes:
Huh?  You can use COPY FROM STDIN in most of our client libraries,
certainly so with libpq.  What are you using?

Actually, I'm using REALbasic.
Um.  I have no idea what sort of support they have, but you do need a
client interface library that knows about the COPY data protocol.
Typically there will be separate API calls for pushing COPY data 
through
after you issue the COPY command.


I figured it out.  They do provide a string to push COPY FROM STDIN 
through.

Thanks anyway!
Mark
---(end of broadcast)---
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]