summaryrefslogtreecommitdiff
path: root/src/bin/psql/copy.c
AgeCommit message (Collapse)Author
2013-05-29pgindent run for release 9.3Bruce Momjian
This is the first run of the Perl-based pgindent script. Also update pgindent instructions.
2013-03-17Move pqsignal() to libpgport.Tom Lane
We had two copies of this function in the backend and libpq, which was already pretty bogus, but it turns out that we need it in some other programs that don't use libpq (such as pg_test_fsync). So put it where it probably should have been all along. The signal-mask-initialization support in src/backend/libpq/pqsignal.c stays where it is, though, since we only need that in the backend.
2013-02-27Add support for piping COPY to/from an external program.Heikki Linnakangas
This includes backend "COPY TO/FROM PROGRAM '...'" syntax, and corresponding psql \copy syntax. Like with reading/writing files, the backend version is superuser-only, and in the psql version, the program is run in the client. In the passing, the psql \copy STDIN/STDOUT syntax is subtly changed: if you the stdin/stdout is quoted, it's now interpreted as a filename. For example, "\copy foo from 'stdin'" now reads from a file called 'stdin', not from standard input. Before this, there was no way to specify a filename called stdin, stdout, pstdin or pstdout. This creates a new function in pgport, wait_result_to_str(), which can be used to convert the exit status of a process, as returned by wait(3), to a human-readable string. Etsuro Fujita, reviewed by Amit Kapila.
2013-01-01Update copyrights for 2013Bruce Momjian
Fully update git head, and update back branches in ./COPYRIGHT and legal.sgml files.
2012-10-02Standardize naming of malloc/realloc/strdup wrapper functions.Tom Lane
We had a number of variants on the theme of "malloc or die", with the majority named like "pg_malloc", but by no means all. Standardize on the names pg_malloc, pg_malloc0, pg_realloc, pg_strdup. Get rid of pg_calloc entirely in favor of using pg_malloc0. This is an essentially cosmetic change, so no back-patch. (I did find a couple of places where psql and pg_dump were using plain malloc or strdup instead of the pg_ versions, but they don't look significant enough to bother back-patching.)
2012-06-10Run pgindent on 9.2 source tree in preparation for first 9.3Bruce Momjian
commit-fest.
2012-01-25Have \copy go through SendQueryAlvaro Herrera
This enables a bunch of features, notably ON_ERROR_ROLLBACK. It also makes COPY failure (either in the server or psql) as a whole behave more sanely in psql. Additionally, having more commands in the same command line as COPY works better (though since psql splits lines at semicolons, this doesn't matter much unless you're using -c). Also tighten a couple of switches on PQresultStatus() to add PGRES_COPY_BOTH support and stop assuming that unknown statuses received are errors; have those print diagnostics where warranted. Author: Noah Misch
2012-01-01Update copyright notices for year 2012.Bruce Momjian
2011-07-05Fix psql's counting of script file line numbers during COPY.Tom Lane
handleCopyIn incremented pset.lineno for each line of COPY data read from a file. This is correct when reading from the current script file (i.e., we are doing COPY FROM STDIN followed by in-line data), but it's wrong if the data is coming from some other file. Per bug #6083 from Steve Haslam. Back-patch to all supported versions.
2011-01-01Stamp copyrights for year 2011.Bruce Momjian
2010-09-20Remove cvs keywords from all files.Magnus Hagander
2010-01-02Update copyright for the year 2010.Bruce Momjian
2009-09-19Remove a couple hundred lines of ugly and tedious-to-maintain code by notTom Lane
trying to parse COPY options exactly in psql's \copy support. Instead, just send the options as-is and let the backend sort it out. Emmanuel Cecchet
2009-08-07Try to defend against the possibility that libpq is still in COPY_IN stateTom Lane
when we reach the post-COPY "pump it dry" error recovery code that was added 2006-11-24. Per a report from Neil Best, there is at least one code path in which this occurs, leading to an infinite loop in code that's supposed to be making it more robust not less so. A reasonable response seems to be to call PQputCopyEnd() again, so let's try that. Back-patch to all versions that contain the cleanup loop.
2009-07-25Code review for FORCE QUOTE * patch: fix error checking to consider FORCETom Lane
QUOTE * as a variety of FORCE QUOTE, and update psql documentation to include the option. (The actual psql code doesn't seem to need any changes.)
2009-04-26Remove Windows-specific definition of S_ISDIR(). This should not be here;Tom Lane
if there are any Windows configurations where port/win32.h fails to provide the macro, it should be fixed in the latter file not here.
2009-01-01Update copyright for 2009.Bruce Momjian
2008-03-11Prevent psql \copy from accepting multiple string parameters, e.g.Bruce Momjian
test=> \copy billing_data from ../BillingSamplePricerFile.csv with csv header quote as '"' null as 'abc' null as '123' \copy: parse error at "null" Per report from Stephen Frost
2008-01-01Update copyrights in source tree to 2008.Bruce Momjian
2007-11-15pgindent run for 8.3.Bruce Momjian
2007-03-16Remove undocumented support for copy syntax from before 7.3. Update comments toAndrew Dunstan
reflect syntax actually supported, e.g. by including CSV params.
2007-02-08Normalize fgets() calls to use sizeof() for calculating the buffer sizePeter Eisentraut
where possible, and fix some sites that apparently thought that fgets() will overwrite the buffer by one byte. Also add some strlcpy() to eliminate some weird memory handling.
2007-02-05Pass modern COPY syntax to backend, since copy (query) does not accept old ↵Andrew Dunstan
syntax. Per complaint from Michael Fuhr.
2007-01-05Update CVS HEAD for 2007 copyright. Back branches are typically notBruce Momjian
back-stamped for this.
2006-11-24Fix psql's \copy command to ensure that it cycles libpq back to the idle stateTom Lane
(in particular, causing the ReadyForQuery message to be eaten) before returning from do_copy. The only known consequence of failing to do so is that get_prompt might show a wrong result for the %x transaction status escape, as reported by Bernd Helmle; but it's possible there are other issues. Back-patch as far as 7.4, the oldest version supporting %x.
2006-10-06Message style improvementsPeter Eisentraut
2006-10-04pgindent run for 8.2.Bruce Momjian
2006-08-30Extend COPY to support COPY (SELECT ...) TO ...Tom Lane
Bernd Helmle
2006-08-29Invent an assign-hook mechanism for psql variables similar to the oneTom Lane
existing for backend GUC variables, and use this to eliminate repeated fetching/parsing of psql variables in psql's inner loops. In a trivial test with lots of 'select 1;' commands, psql's CPU time went down almost 10%, although of course the effect on total elapsed time was much less. Per discussion about how to ensure the upcoming FETCH_COUNT patch doesn't cost any performance when not being used.
2006-06-14Clean up psql's control-C handling to avoid longjmp'ing out of randomTom Lane
places --- that risks corrupting data structures, losing sync with the backend, etc. We now longjmp only from calls to readline, fgets, and fread, which we assume are coded to protect themselves against interrupts at undesirable times. This requires adding explicit tests for cancel_pressed in long-running loops, but on the whole it's far cleaner. Martijn van Oosterhout and Tom Lane.
2006-06-07Prepare code to be built by MSVC:Bruce Momjian
o remove many WIN32_CLIENT_ONLY defines o add WIN32_ONLY_COMPILER define o add 3rd argument to open() for portability o add include/port/win32_msvc directory for system includes Magnus Hagander
2006-06-01Respond to Jeremy Drake's original gripe that \copy needs to recognizeTom Lane
E'...' syntax for strings in order to track the backend.
2006-06-01Fix up hack to suppress escape_string_warning so that it actually worksTom Lane
and there's only one place that's a kluge, ie, appendStringLiteralConn. Note that pg_dump itself doesn't use appendStringLiteralConn, so its behavior is not affected; only the other utility programs care.
2006-05-31Escape processing patch:Bruce Momjian
o turns off escape_string_warning in pg_dumpall.c o optionally use E'' for \password (undocumented option?) o honor standard_conforming-strings for \copy (but not support literal E'' strings) o optionally use E'' for \d commands o turn off escape_string_warning for createdb, createuser, droplang
2006-05-26Support binary COPY through psql. Also improve detection of write errorsTom Lane
during COPY OUT. Andreas Pflug, some editorialization by moi.
2006-03-05Update copyright for 2006. Update scripts.Bruce Momjian
2006-03-03Improve pg_dump and psql to use libpq's newer COPY support routines,Tom Lane
instead of the old deprecated ones. Volkan Yazici, with some editorializing by moi.
2005-10-15Standard pgindent run for 8.1.Bruce Momjian
2005-05-07Add COPY WITH CVS HEADER to allow a heading line as the first line inBruce Momjian
COPY. Andrew Dunstan
2005-02-22Use _() macro consistently rather than gettext(). Add translationBruce Momjian
macros around strings that were missing them.
2005-01-01Update copyrights that were missed.Bruce Momjian
2004-08-29Pgindent run for 8.0.Bruce Momjian
2004-08-29Update copyright to 2004.Bruce Momjian
2004-08-13Fix psql's COPY support to deal with \r\n line endings.Tom Lane
Andrew Dunstan, some further hacking by Tom Lane.
2004-08-13Fix core dumps, inability to count, etc associated with canonicalize_pathTom Lane
patches.
2004-07-11Use canonicalize_path for -D, GUC paths, and paths coming in fromBruce Momjian
environment variables.
2004-07-11Use standard macro for psql binary file open. Add comment explainingBruce Momjian
control-z requirement.
2004-07-11Open files in binary mode on Win32 so control-z isn't seen as EOF.Bruce Momjian
2004-05-07Solve the 'Turkish problem' with undesirable locale behavior for caseTom Lane
conversion of basic ASCII letters. Remove all uses of strcasecmp and strncasecmp in favor of new functions pg_strcasecmp and pg_strncasecmp; remove most but not all direct uses of toupper and tolower in favor of pg_toupper and pg_tolower. These functions use the same notions of case folding already developed for identifier case conversion. I left the straight locale-based folding in place for situations where we are just manipulating user data and not trying to match it to built-in strings --- for example, the SQL upper() function is still locale dependent. Perhaps this will prove not to be what's wanted, but at the moment we can initdb and pass regression tests in Turkish locale.
2004-04-21Change COPY CSV keyword to be:Bruce Momjian
FORCE QUOTE to force quotes FORCE NOT NULL to quote null input values