Re: md5 of table - Mailing list pgsql-general

From Merlin Moncure
Subject Re: md5 of table
Date
Msg-id CAHyXU0yGN+oV6PCqAWogwe9N8L+LTKiSm309XyfWBhjO5WM15g@mail.gmail.com
Whole thread Raw
In response to Re: md5 of table  (Sim Zacks <sim@compulab.co.il>)
Responses Re: md5 of table  (Sim Zacks <sim@compulab.co.il>)
List pgsql-general
2011/9/1 Sim Zacks <sim@compulab.co.il>:
>
>> OP:
>>>
>>> I thought about using dblink and the EXCEPT query, but then I need to
>>> know the field list of each query result, which is a pain in the butt.
>>
>> That is not correct.  As long as the table definitions are precisely
>> the same, you can move records across dblink without specifying
>> fields.  You do this by using record type for the composite which
>> dblink sends across as text.
>>
>> merlin
>
> Do you have a quick example? This is what I have tried:
>
> select * from tbla
> except
> select * from dblink('host=dbhost dbname=otherdb user=myuser
> password=mypwd'::text, 'select * from tbla')
>
> The error I get back is:
> ERROR:  a column definition list is required for functions returning
> "record"

sure:
select tbla from tbla
except
select t::tbla from dblink('host=dbhost dbname=otherdb user=myuser
password=mypwd'::text, 'select tbla::text from tbla') R(t text);

there's a bunch of ways to do that -- you can also do the md5 on the
remote side so you can just send the digests.
select * from tbla
except
select (t::tbla).* from dblink('host=dbhost dbname=otherdb user=myuser
password=mypwd'::text, 'select tbla::text from tbla') R(t text);

should also work.

This *might* work -- I didn't try.  It's been a while since I've used
stock dblink.
select * from tbla
except
select (t).* from dblink('host=dbhost dbname=otherdb user=myuser
password=mypwd'::text, 'select tbla from tbla') R(t tbla);

merlin

pgsql-general by date:

Previous
From: Rik Bellens
Date:
Subject: Re: strange table disk sizes
Next
From: Scott Marlowe
Date:
Subject: Re: strange table disk sizes