Re: [HACKERS] patches for items from TODO list

2005-05-27 Thread Bruce Momjian

I have removed the XML TODO item:

* Add XML output to pg_dump and COPY

  We already allow XML to be stored in the database, and XPath queries
  can be used on that data using /contrib/xml2. It also supports XSLT
  transformations.

---

Josh Berkus wrote:
 Folks,
 
  - The COPY - XML transformation is trivial -- it would be easy for
  clients to roll their own. At the same time, there is no standard or
  canonical XML representation for COPY output, and I can easily imagine
  different clients needing different representations. So there is limited
  value in providing a single, inflexible backend implementation.
 
 I'm going to second Neil here.   This feature becomes useful *only* when 
 there 
 is a certified or de-facto universal standard XML representation for database 
 data.   Then I could see a case for it.  But there isn't.   
 
 Feel free to throw it on pgFoundry, though.
 
 -- 
 Josh Berkus
 Aglio Database Solutions
 San Francisco
 
 ---(end of broadcast)---
 TIP 2: you can get off all lists at once with the unregister command
 (send unregister YourEmailAddressHere to [EMAIL PROTECTED])
 

-- 
  Bruce Momjian|  http://candle.pha.pa.us
  pgman@candle.pha.pa.us   |  (610) 359-1001
  +  If your life is a hard drive, |  13 Roberts Road
  +  Christ can be your backup.|  Newtown Square, Pennsylvania 19073

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


Re: [HACKERS] patches for items from TODO list

2005-05-21 Thread Andrew Dunstan


minor nit: the null attribute should take XMLSchema boolean type values: 
{true, false, 1, 0}


More importantly, how do you handle array or record type fields? If they 
are just opaque text I don't think that's what I at least would want 
from XML output routines.


cheers

andrew

Christopher Kings-Lynne wrote:

I'm going to second Neil here.   This feature becomes useful *only* 
when there is a certified or de-facto universal standard XML 
representation for database data.   Then I could see a case for it.  
But there isn't.   



We've done it in phpPgAdmin (we made up our own standard), and a 
couple of people use it.  I also do not think that it should be in the 
backend until there is a standard.  Here is what phpPgAdmin produces 
(note NULL handling):


?xml version=1.0 encoding=UTF-8 ?
data
header
column name=feature_id type=varchar /
column name=feature_name type=varchar /
column name=is_supported type=varchar /
column name=is_verified_by type=varchar /
column name=comments type=varchar /
/header
records
row
column name=feature_idPKG000/column
column name=feature_nameCore/column
column name=is_supportedNO/column
column name=is_verified_by null=null/column
column name=comments null=null/column
/row
row
column name=feature_idPKG001/column
column name=feature_nameEnhanced datetime 
facilities/column

column name=is_supportedYES/column
column name=is_verified_by null=null/column
column name=comments null=null/column
/row
row
column name=feature_idPKG002/column
column name=feature_nameEnhanced integrity 
management/column

column name=is_supportedNO/column
column name=is_verified_by null=null/column
column name=comments null=null/column
/row
row
column name=feature_idPKG003/column
column name=feature_nameOLAP facilities/column
column name=is_supportedNO/column
column name=is_verified_by null=null/column
column name=comments null=null/column
/row
row
column name=feature_idPKG004/column
column name=feature_namePSM/column
column name=is_supportedNO/column
column name=is_verified_by null=null/column
column name=commentsPL/pgSQL is similar./column
/row
row
column name=feature_idPKG005/column
column name=feature_nameCLI/column
column name=is_supportedNO/column
column name=is_verified_by null=null/column
column name=commentsODBC is similar./column
/row
row
column name=feature_idPKG006/column
column name=feature_nameBasic object support/column
column name=is_supportedNO/column
column name=is_verified_by null=null/column
column name=comments null=null/column
/row
row
column name=feature_idPKG007/column
column name=feature_nameEnhanced object support/column
column name=is_supportedNO/column
column name=is_verified_by null=null/column
column name=comments null=null/column
/row
row
column name=feature_idPKG008/column
column name=feature_nameActive database/column
column name=is_supportedNO/column
column name=is_verified_by null=null/column
column name=comments null=null/column
/row
row
column name=feature_idPKG010/column
column name=feature_nameOLAP/column
column name=is_supportedNO/column
column name=is_verified_by null=null/column
column name=commentsNO/column
/row
/records
/data

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

  http://www.postgresql.org/docs/faq



---(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


Re: [HACKERS] patches for items from TODO list

2005-05-20 Thread Bruce Momjian
Sergey Ten wrote:
 Markus,
 
 Thank you for your reply.
 We considered embedding of an XML schema first followed by data. We decided
 to stick to our current data format to make sure stateless XML parsers can
 process it as well. Would it be better to add an option to the COPY command,
 to allow embedding an XML schema, so more advanced XML parsers can take
 advantage of it?

Current CVS has a WITH CSV HEADER option.  I wonder if we should add a
HEADER option to XML to output the schema --- seems to make sense.

-- 
  Bruce Momjian|  http://candle.pha.pa.us
  pgman@candle.pha.pa.us   |  (610) 359-1001
  +  If your life is a hard drive, |  13 Roberts Road
  +  Christ can be your backup.|  Newtown Square, Pennsylvania 19073

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


Re: [HACKERS] patches for items from TODO list

2005-05-20 Thread Bruce Momjian
Neil Conway wrote:
 Sergey Ten wrote:
  We think that putting it in the backend will make access from other
  components easier.
 
 In what way?
 
 It seems to me that this can be done just as easily in a client 
 application / library, without cluttering the backend with yet another 
 COPY output format. It would also avoid the need to mandate a single XML 
 schema -- different clients will likely have different requirements. 
 Since I am skeptical of the value of this feature in the first place, I 
 think it would do less damage if implemented outside the backend.

We considered putting XML in psql or libpq in the past, but the problem
is that interfaces like jdbc couldn't take advantage of it. I do think
it needs to be in the backend, and I think that is the agreement we had
in the past.

-- 
  Bruce Momjian|  http://candle.pha.pa.us
  pgman@candle.pha.pa.us   |  (610) 359-1001
  +  If your life is a hard drive, |  13 Roberts Road
  +  Christ can be your backup.|  Newtown Square, Pennsylvania 19073

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


Re: [HACKERS] patches for items from TODO list

2005-05-20 Thread Andrew Dunstan
I've been reviewing this patch and some of the following discussion.
First, postgresql patches are usually sent as context diffs. I don't 
object to unidiffs myself, but you should do what everybody else does.

Second, it's best not to combine features in one patch. The \x escape 
piece should be broken out.

I'm also a rather worried about COPY producing output which it can't 
itself parse. We can read our own binary, text and CSV formats, and I 
think that's a useful validation tool. I know the TODO item only 
mentions output, but I believe we should rethink that. In any case, if 
it's valid for us to hand XML to other programs why shouldn't we accept 
it too. This is all about playing nicely in the playground.

One advantage of XML is that, being hierarchical, it can easily express 
nested composites (records, arrays) in a way that our present text and 
CSV formats really can't. But unless I missed something this patch 
doesn't in fact do anything to break out nested composites.

Finally, I don't know if there is a standard on this, or even a 
convention. What do other DBs do? I'm not keen on us just inventing our 
own XML dialect for something that should after all be most useful in 
data exchange.

Bottom line, much as I would like to see XML input/output, I think this 
needs lots more thought and discussion.

cheers
andrew
Sergey Ten wrote:
Hello all,
Thank you to all who replied for suggestions and help. Enclosed please find
code changes for the following items:
- Allow COPY to understand \x as a hex byte, and
- Add XML output to COPY
The changes include implementation of the features as well as modification
of the copy regression test.
After a careful consideration we decided to
- put XML implementation in the backend and
- use XML format described below, with justification of our decision.
The XML schema used by the COPY TO command was designed for ease of use and
to avoid the problem of column names appearing in XML element names. 
XML doesn't allow spaces and punctuation in element names but Postgres does
allow these characters in column names; therefore, a direct mapping would be
problematic.

The solution selected places the column names into attribute fields where
any special characters they contain can be properly escaped using XML
entities.  An additional attribute is used to distinguish null fields from
empty ones.
The example below is taken from the test suite.  It demonstrates some basic
XML escaping in row 2.  Row 3 demonstrates the difference between an empty
string (in col2) and a null string (in col3).  If a field is null it will
always be empty but a field which is empty may or may not be null. 
Always check the value of the 'null' attribute to be sure when a field is
truly null.

?xml version='1.0'?
table
row
col name='col1' null='n'Jackson, Sam/col
col name='col2' null='n'\h/col
/row
row
col name='col1' null='n'It is quot;perfectquot;./col
col name='col2' null='n'#09;/col
/row
row
col name='col1' null='n'/col
col name='col2' null='y'/col
/row
/table
Please let us know if about any concerns, objections the proposed change may
cause.
Best regards,
Jason Lucas, Sergey Ten
SourceLabs
 

-Original Message-
From: Bruce Momjian [mailto:[EMAIL PROTECTED]
Sent: Wednesday, May 11, 2005 7:11 PM
To: Sergey Ten
Cc: pgsql-hackers@postgresql.org; [EMAIL PROTECTED]
Subject: Re: [HACKERS] patches for items from TODO list
Sergey Ten wrote:
   

Hello all,
We would like to contribute to the Postgresql community by implementing
the following items from the TODO list
(http://developer.postgresql.org/todo.php):
. Allow COPY to understand \x as a hex byte . Allow COPY to optionally
include column headings in the first line . Add XML output to COPY
The changes are straightforward and include implementation of the
features as well as modification of the regression tests and
 

documentation.
   

Before sending a diff file with the changes, we would like to know if
these features have been already implemented.
 

Please check the web site version.  Someone has already implemented
Allow COPY to optionally include column headings in the first line.
As far as XML, there has been discussion on where that should be done?
In the backend, libpq, or psql.  It will need discussion on hackers.  I
assume you have read the developer's FAQ too.
--
 Bruce Momjian|  http://candle.pha.pa.us
 pgman@candle.pha.pa.us   |  (610) 359-1001
 +  If your life is a hard drive, |  13 Roberts Road
 +  Christ can be your backup.|  Newtown Square, Pennsylvania
19073
   


Index: src/backend/commands/copy.c
===
RCS file: /projects/cvsroot/pgsql/src/backend/commands/copy.c,v
retrieving revision

Re: [HACKERS] patches for items from TODO list

2005-05-20 Thread Neil Conway
Bruce Momjian wrote:
We considered putting XML in psql or libpq in the past, but the problem
is that interfaces like jdbc couldn't take advantage of it.
Well, you could implement it as a C UDF and use SPI. Or write it as a C 
client library, and use JNI. Or just provide a Java implementation -- 
it's not like the COPY - XML transformation is very complex.

To restate the case:
- I don't see how this feature is useful. Perhaps I'm mistaken, but I 
don't think there's a lot of user demand for it (feel free to 
demonstrate the contrary)

- The COPY - XML transformation is trivial -- it would be easy for 
clients to roll their own. At the same time, there is no standard or 
canonical XML representation for COPY output, and I can easily imagine 
different clients needing different representations. So there is limited 
value in providing a single, inflexible backend implementation.

- There's no need for it to be in the backend, anyway. Perhaps if there 
were overwhelming demand for this functionality, we would need to 
provide it for all client libraries and the easiest solution would be to 
put it in the backend, but I don't think that's the case.

If people really think XML COPY output mode is useful, why not implement 
it client-side first and host it on pgfoundry? If lots of people are 
using the client-side code, we can consider moving it into the core 
distribution or the backend itself at that point.

-Neil
---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?
  http://www.postgresql.org/docs/faq


Re: [HACKERS] patches for items from TODO list

2005-05-20 Thread Bruce Momjian
Neil Conway wrote:
 Bruce Momjian wrote:
  We considered putting XML in psql or libpq in the past, but the problem
  is that interfaces like jdbc couldn't take advantage of it.
 
 Well, you could implement it as a C UDF and use SPI. Or write it as a C 
 client library, and use JNI. Or just provide a Java implementation -- 
 it's not like the COPY - XML transformation is very complex.
 
 To restate the case:
 
 - I don't see how this feature is useful. Perhaps I'm mistaken, but I 
 don't think there's a lot of user demand for it (feel free to 
 demonstrate the contrary)
 
 - The COPY - XML transformation is trivial -- it would be easy for 
 clients to roll their own. At the same time, there is no standard or 
 canonical XML representation for COPY output, and I can easily imagine 
 different clients needing different representations. So there is limited 
 value in providing a single, inflexible backend implementation.
 
 - There's no need for it to be in the backend, anyway. Perhaps if there 
 were overwhelming demand for this functionality, we would need to 
 provide it for all client libraries and the easiest solution would be to 
 put it in the backend, but I don't think that's the case.
 
 If people really think XML COPY output mode is useful, why not implement 
 it client-side first and host it on pgfoundry? If lots of people are 
 using the client-side code, we can consider moving it into the core 
 distribution or the backend itself at that point.

All I can say is that we rejected an XML in the client patch a long time
ago and the discussion was that it belongs in the backend so everyone
can use it.  I don't use XML myself so I have no opinion.  We need
people who need XML output to comment in this thread.

-- 
  Bruce Momjian|  http://candle.pha.pa.us
  pgman@candle.pha.pa.us   |  (610) 359-1001
  +  If your life is a hard drive, |  13 Roberts Road
  +  Christ can be your backup.|  Newtown Square, Pennsylvania 19073

---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
  subscribe-nomail command to [EMAIL PROTECTED] so that your
  message can get through to the mailing list cleanly


Re: [HACKERS] patches for items from TODO list

2005-05-20 Thread Josh Berkus
Folks,

 - The COPY - XML transformation is trivial -- it would be easy for
 clients to roll their own. At the same time, there is no standard or
 canonical XML representation for COPY output, and I can easily imagine
 different clients needing different representations. So there is limited
 value in providing a single, inflexible backend implementation.

I'm going to second Neil here.   This feature becomes useful *only* when there 
is a certified or de-facto universal standard XML representation for database 
data.   Then I could see a case for it.  But there isn't.   

Feel free to throw it on pgFoundry, though.

-- 
Josh Berkus
Aglio Database Solutions
San Francisco

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


Re: [HACKERS] patches for items from TODO list

2005-05-20 Thread Tom Lane
Josh Berkus josh@agliodbs.com writes:
 I'm going to second Neil here.

I think the same --- given the points about lack of standardization,
it seems premature to put this into the backend.  I'd be for it if
there were a clear standard, but ...

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: [HACKERS] patches for items from TODO list

2005-05-20 Thread Christopher Kings-Lynne
I'm going to second Neil here.   This feature becomes useful *only* when there 
is a certified or de-facto universal standard XML representation for database 
data.   Then I could see a case for it.  But there isn't.   


We've done it in phpPgAdmin (we made up our own standard), and a couple 
of people use it.  I also do not think that it should be in the backend 
until there is a standard.  Here is what phpPgAdmin produces (note NULL 
handling):


?xml version=1.0 encoding=UTF-8 ?
data
header
column name=feature_id type=varchar /
column name=feature_name type=varchar /
column name=is_supported type=varchar /
column name=is_verified_by type=varchar /
column name=comments type=varchar /
/header
records
row
column name=feature_idPKG000/column
column name=feature_nameCore/column
column name=is_supportedNO/column
column name=is_verified_by null=null/column
column name=comments null=null/column
/row
row
column name=feature_idPKG001/column
column name=feature_nameEnhanced datetime 
facilities/column
column name=is_supportedYES/column
column name=is_verified_by null=null/column
column name=comments null=null/column
/row
row
column name=feature_idPKG002/column
column name=feature_nameEnhanced integrity 
management/column
column name=is_supportedNO/column
column name=is_verified_by null=null/column
column name=comments null=null/column
/row
row
column name=feature_idPKG003/column
column name=feature_nameOLAP facilities/column
column name=is_supportedNO/column
column name=is_verified_by null=null/column
column name=comments null=null/column
/row
row
column name=feature_idPKG004/column
column name=feature_namePSM/column
column name=is_supportedNO/column
column name=is_verified_by null=null/column
column name=commentsPL/pgSQL is similar./column
/row
row
column name=feature_idPKG005/column
column name=feature_nameCLI/column
column name=is_supportedNO/column
column name=is_verified_by null=null/column
column name=commentsODBC is similar./column
/row
row
column name=feature_idPKG006/column
column name=feature_nameBasic object 
support/column
column name=is_supportedNO/column
column name=is_verified_by null=null/column
column name=comments null=null/column
/row
row
column name=feature_idPKG007/column
column name=feature_nameEnhanced object 
support/column
column name=is_supportedNO/column
column name=is_verified_by null=null/column
column name=comments null=null/column
/row
row
column name=feature_idPKG008/column
column name=feature_nameActive database/column
column name=is_supportedNO/column
column name=is_verified_by null=null/column
column name=comments null=null/column
/row
row
column name=feature_idPKG010/column
column name=feature_nameOLAP/column
column name=is_supportedNO/column
column name=is_verified_by null=null/column
column name=commentsNO/column
/row
/records
/data

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

  http://www.postgresql.org/docs/faq


Re: [HACKERS] patches for items from TODO list

2005-05-18 Thread Sergey Ten
Markus,

Thank you for your reply.
We considered embedding of an XML schema first followed by data. We decided
to stick to our current data format to make sure stateless XML parsers can
process it as well. Would it be better to add an option to the COPY command,
to allow embedding an XML schema, so more advanced XML parsers can take
advantage of it?

Thanks,
Jason, Sergey

 -Original Message-
 From: Markus Bertheau [mailto:[EMAIL PROTECTED]
 Sent: Tuesday, May 17, 2005 6:00 PM
 To: Sergey Ten
 Cc: 'Bruce Momjian'; 'Christopher Kings-Lynne'; pgsql-
 [EMAIL PROTECTED]; [EMAIL PROTECTED]
 Subject: Re: [HACKERS] patches for items from TODO list
 
 Dnia 13-05-2005, pi o godzinie 16:01 -0700, Sergey Ten napisa(a):
 
  ?xml version='1.0'?
  table
  row
  col name='col1' null='n'Jackson, Sam/col
  col name='col2' null='n'\h/col
  /row
  row
  col name='col1' null='n'It is quot;perfectquot;./col
  col name='col2' null='n'#09;/col
  /row
  row
  col name='col1' null='n'/col
  col name='col2' null='y'/col
  /row
  /table
 
 Why didn't you do something to the effect of
 
 ?xml version='1.0'?
 table
   cols
   col name='col1'/
   col name='col2'/
   /cols
   row
   col null='n'Jackson, Sam/col
   col null='n'\h/col
   /row
   row
   col null='n'It is quot;perfectquot;./col
   col null='n'#09;/col
   /row
   row
   col null='n'/col
   col null='y'/col
   /row
 /table
 
 This avoids repeating the column names in every row, which don't change
 over the rows anyway. By reducing redundant information it also makes
 structurally invalid XML less likely (whether that is relevant depends
 on what people do with the XML data).
 
 Also you could encode the XML output as UTF-8, which would make the
 files more readable for humans if the text data is not ASCII.
 
 Markus
 
 --
 Markus Bertheau [EMAIL PROTECTED]


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


Re: [HACKERS] patches for items from TODO list

2005-05-18 Thread Sergey Ten
Neil,

We think that putting it in the backend will make access from other
components easier.

Thank you,
Sergey

 -Original Message-
 From: Neil Conway [mailto:[EMAIL PROTECTED]
 Sent: Tuesday, May 17, 2005 7:11 PM
 To: Sergey Ten
 Cc: 'Bruce Momjian'; 'Christopher Kings-Lynne'; pgsql-
 [EMAIL PROTECTED]; [EMAIL PROTECTED]
 Subject: Re: [HACKERS] patches for items from TODO list
 
 Sergey Ten wrote:
  After a careful consideration we decided to
  - put XML implementation in the backend
 
 What advantage does putting the XML output mode in the backend provide?
 
 -Neil


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


Re: [HACKERS] patches for items from TODO list

2005-05-18 Thread Neil Conway
Sergey Ten wrote:
We think that putting it in the backend will make access from other
components easier.
In what way?
It seems to me that this can be done just as easily in a client 
application / library, without cluttering the backend with yet another 
COPY output format. It would also avoid the need to mandate a single XML 
schema -- different clients will likely have different requirements. 
Since I am skeptical of the value of this feature in the first place, I 
think it would do less damage if implemented outside the backend.

-Neil
---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
 subscribe-nomail command to [EMAIL PROTECTED] so that your
 message can get through to the mailing list cleanly


Re: [HACKERS] patches for items from TODO list

2005-05-17 Thread Markus Bertheau
Dnia 13-05-2005, pi o godzinie 16:01 -0700, Sergey Ten napisa(a):

 ?xml version='1.0'?
 table
   row
   col name='col1' null='n'Jackson, Sam/col
   col name='col2' null='n'\h/col
   /row
   row
   col name='col1' null='n'It is quot;perfectquot;./col
   col name='col2' null='n'#09;/col
   /row
   row
   col name='col1' null='n'/col
   col name='col2' null='y'/col
   /row
 /table

Why didn't you do something to the effect of

?xml version='1.0'?
table
cols
col name='col1'/
col name='col2'/
/cols
row
col null='n'Jackson, Sam/col
col null='n'\h/col
/row
row
col null='n'It is quot;perfectquot;./col
col null='n'#09;/col
/row
row
col null='n'/col
col null='y'/col
/row
/table

This avoids repeating the column names in every row, which don't change
over the rows anyway. By reducing redundant information it also makes
structurally invalid XML less likely (whether that is relevant depends
on what people do with the XML data).

Also you could encode the XML output as UTF-8, which would make the
files more readable for humans if the text data is not ASCII.

Markus

-- 
Markus Bertheau [EMAIL PROTECTED]


signature.asc
Description: This is a digitally signed message part


Re: [HACKERS] patches for items from TODO list

2005-05-17 Thread Neil Conway
Sergey Ten wrote:
After a careful consideration we decided to
- put XML implementation in the backend
What advantage does putting the XML output mode in the backend provide?
-Neil
---(end of broadcast)---
TIP 8: explain analyze is your friend


Re: [HACKERS] patches for items from TODO list

2005-05-13 Thread Sergey Ten
Hello all,

Thank you to all who replied for suggestions and help. Enclosed please find
code changes for the following items:
- Allow COPY to understand \x as a hex byte, and
- Add XML output to COPY
The changes include implementation of the features as well as modification
of the copy regression test.

After a careful consideration we decided to
- put XML implementation in the backend and
- use XML format described below, with justification of our decision.

The XML schema used by the COPY TO command was designed for ease of use and
to avoid the problem of column names appearing in XML element names. 
XML doesn't allow spaces and punctuation in element names but Postgres does
allow these characters in column names; therefore, a direct mapping would be
problematic.

The solution selected places the column names into attribute fields where
any special characters they contain can be properly escaped using XML
entities.  An additional attribute is used to distinguish null fields from
empty ones.

The example below is taken from the test suite.  It demonstrates some basic
XML escaping in row 2.  Row 3 demonstrates the difference between an empty
string (in col2) and a null string (in col3).  If a field is null it will
always be empty but a field which is empty may or may not be null. 
Always check the value of the 'null' attribute to be sure when a field is
truly null.

?xml version='1.0'?
table
row
col name='col1' null='n'Jackson, Sam/col
col name='col2' null='n'\h/col
/row
row
col name='col1' null='n'It is quot;perfectquot;./col
col name='col2' null='n'#09;/col
/row
row
col name='col1' null='n'/col
col name='col2' null='y'/col
/row
/table

Please let us know if about any concerns, objections the proposed change may
cause.

Best regards,
Jason Lucas, Sergey Ten
SourceLabs

 -Original Message-
 From: Bruce Momjian [mailto:[EMAIL PROTECTED]
 Sent: Wednesday, May 11, 2005 7:11 PM
 To: Sergey Ten
 Cc: pgsql-hackers@postgresql.org; [EMAIL PROTECTED]
 Subject: Re: [HACKERS] patches for items from TODO list
 
 Sergey Ten wrote:
  Hello all,
 
  We would like to contribute to the Postgresql community by implementing
  the following items from the TODO list
  (http://developer.postgresql.org/todo.php):
  . Allow COPY to understand \x as a hex byte . Allow COPY to optionally
  include column headings in the first line . Add XML output to COPY
 
  The changes are straightforward and include implementation of the
  features as well as modification of the regression tests and
 documentation.
 
  Before sending a diff file with the changes, we would like to know if
  these features have been already implemented.
 
 Please check the web site version.  Someone has already implemented
 Allow COPY to optionally include column headings in the first line.
 
 As far as XML, there has been discussion on where that should be done?
 In the backend, libpq, or psql.  It will need discussion on hackers.  I
 assume you have read the developer's FAQ too.
 
 --
   Bruce Momjian|  http://candle.pha.pa.us
   pgman@candle.pha.pa.us   |  (610) 359-1001
   +  If your life is a hard drive, |  13 Roberts Road
   +  Christ can be your backup.|  Newtown Square, Pennsylvania
 19073
Index: src/backend/commands/copy.c
===
RCS file: /projects/cvsroot/pgsql/src/backend/commands/copy.c,v
retrieving revision 1.244
diff -u -r1.244 copy.c
--- src/backend/commands/copy.c 7 May 2005 02:22:46 -   1.244
+++ src/backend/commands/copy.c 13 May 2005 22:21:00 -
@@ -84,6 +84,16 @@
EOL_CRNL
 } EolType;

+/*
+ * Represents the format of the file to be read or written
+ */
+typedef enum CopyFmt
+{
+   FMT_TXT,
+   FMT_BIN,
+   FMT_CSV,
+   FMT_XML
+} CopyFmt;
 
 static const char BinarySignature[11] = PGCOPY\n\377\r\n\0;
 
@@ -129,14 +139,14 @@
 static bool line_buf_converted;
 
 /* non-export function prototypes */
-static void DoCopyTo(Relation rel, List *attnumlist, bool binary, bool oids,
-char *delim, char *null_print, bool csv_mode, char *quote,
+static void DoCopyTo(Relation rel, List *attnumlist, CopyFmt fmt, bool oids,
+char *delim, char *null_print, char *quote,
 char *escape, List *force_quote_atts, bool header_line, bool 
fe_copy);
-static void CopyTo(Relation rel, List *attnumlist, bool binary, bool oids,
- char *delim, char *null_print, bool csv_mode, char *quote, char *escape,
+static void CopyTo(Relation rel, List *attnumlist, CopyFmt fmt, bool oids,
+ char *delim, char *null_print, char *quote, char *escape,
   List *force_quote_atts, bool header_line);
-static void CopyFrom(Relation rel, List *attnumlist, bool binary, bool oids,
- char *delim, char *null_print, bool csv_mode, char *quote, char

Re: [HACKERS] patches for items from TODO list

2005-05-12 Thread Sergey Ten
Thank you to all who replied for your time.

We have checked http://momjian.postgresql.org/cgi-bin/pgpatches and
http://momjian.postgresql.org/cgi-bin/pgpatches2, and could not find patches
with words copy or xml in the subject. Could you please clarify what the
website version is and where it can be found? Is it sources available at
ftp://ftp.postgresql.org?

Best regards,
Jason, Sergey

 -Original Message-
 From: Christopher Kings-Lynne [mailto:[EMAIL PROTECTED]
 Sent: Wednesday, May 11, 2005 7:36 PM
 To: Bruce Momjian
 Cc: Sergey Ten; pgsql-hackers@postgresql.org; [EMAIL PROTECTED]
 Subject: Re: [HACKERS] patches for items from TODO list
 
  Please check the web site version.  Someone has already implemented
  Allow COPY to optionally include column headings in the first line.
 
  As far as XML, there has been discussion on where that should be done?
  In the backend, libpq, or psql.  It will need discussion on hackers.  I
  assume you have read the developer's FAQ too.
 
 The other issue is 'what XML format'?  Find me a standard data dump XML
 DTD and I'll change phpPgAdmin to use it as well.
 
 Otherwise, phpPgAdmin's is quite simple.
 
 Chris


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

   http://archives.postgresql.org


Re: [HACKERS] patches for items from TODO list

2005-05-12 Thread Michael Paesold
Sergey Ten wrote:
Thank you to all who replied for your time.
We have checked http://momjian.postgresql.org/cgi-bin/pgpatches and
http://momjian.postgresql.org/cgi-bin/pgpatches2, and could not find 
patches
with words copy or xml in the subject. Could you please clarify what 
the
website version is and where it can be found? Is it sources available at
ftp://ftp.postgresql.org?
I think the website version of the TODO is that one on www.postgresql.org 
(see http://www.postgresql.org/docs/faqs.TODO.html, from 
Developers-Roadmap).
-Allow COPY to optionally include column headings in the first line is 
already completed (-). That is what Bruce referenced (below).

The patch has already been commited and is therefore not on the patches list 
anymore:
http://archives.postgresql.org/pgsql-committers/2005-05/msg00075.php

(I searched for copy in the mailing list archives of pgsql-committers.)
Bruce Momjian wrote:
 Please check the web site version.  Someone has already implemented
 Allow COPY to optionally include column headings in the first line.

Hope that clarifies the situation a little bit.
Best Regards,
Michael Paesold 

---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?
  http://www.postgresql.org/docs/faq


[HACKERS] patches for items from TODO list

2005-05-11 Thread Sergey Ten
Hello all,
We would like to contribute to the Postgresql community by implementing 
the following items from the TODO list 
(http://developer.postgresql.org/todo.php):
. Allow COPY to understand \x as a hex byte . Allow COPY to optionally 
include column headings in the first line . Add XML output to COPY

The changes are straightforward and include implementation of the 
features as well as modification of the regression tests and documentation.

Before sending a diff file with the changes, we would like to know if 
these features have been already implemented.

Best regards,
Jason Lucas and Sergey Ten
SourceLabs
Dependable Open Source Systems
---(end of broadcast)---
TIP 2: you can get off all lists at once with the unregister command
   (send unregister YourEmailAddressHere to [EMAIL PROTECTED])


Re: [HACKERS] patches for items from TODO list

2005-05-11 Thread Bruce Momjian
Sergey Ten wrote:
 Hello all,
 
 We would like to contribute to the Postgresql community by implementing 
 the following items from the TODO list 
 (http://developer.postgresql.org/todo.php):
 . Allow COPY to understand \x as a hex byte . Allow COPY to optionally 
 include column headings in the first line . Add XML output to COPY
 
 The changes are straightforward and include implementation of the 
 features as well as modification of the regression tests and documentation.
 
 Before sending a diff file with the changes, we would like to know if 
 these features have been already implemented.

Please check the web site version.  Someone has already implemented
Allow COPY to optionally include column headings in the first line.

As far as XML, there has been discussion on where that should be done? 
In the backend, libpq, or psql.  It will need discussion on hackers.  I
assume you have read the developer's FAQ too.

-- 
  Bruce Momjian|  http://candle.pha.pa.us
  pgman@candle.pha.pa.us   |  (610) 359-1001
  +  If your life is a hard drive, |  13 Roberts Road
  +  Christ can be your backup.|  Newtown Square, Pennsylvania 19073

---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
  subscribe-nomail command to [EMAIL PROTECTED] so that your
  message can get through to the mailing list cleanly


Re: [HACKERS] patches for items from TODO list

2005-05-11 Thread Christopher Kings-Lynne
Please check the web site version.  Someone has already implemented
Allow COPY to optionally include column headings in the first line.
As far as XML, there has been discussion on where that should be done? 
In the backend, libpq, or psql.  It will need discussion on hackers.  I
assume you have read the developer's FAQ too.
The other issue is 'what XML format'?  Find me a standard data dump XML 
DTD and I'll change phpPgAdmin to use it as well.

Otherwise, phpPgAdmin's is quite simple.
Chris
---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?
  http://www.postgresql.org/docs/faq