|
8 | 8 | *
|
9 | 9 | *
|
10 | 10 | * IDENTIFICATION
|
11 |
| - * $PostgreSQL: pgsql/src/backend/commands/copy.c,v 1.257 2005/12/28 03:25:32 momjian Exp $ |
| 11 | + * $PostgreSQL: pgsql/src/backend/commands/copy.c,v 1.258 2006/02/03 12:41:07 momjian Exp $ |
12 | 12 | *
|
13 | 13 | *-------------------------------------------------------------------------
|
14 | 14 | */
|
@@ -856,6 +856,25 @@ DoCopy(const CopyStmt *stmt)
|
856 | 856 | (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
857 | 857 | errmsg("COPY delimiter must be a single character")));
|
858 | 858 |
|
| 859 | +/* Disallow end-of-line characters */ |
| 860 | +if (strchr(cstate->delim,'\r')!=NULL|| |
| 861 | +strchr(cstate->delim,'\n')!=NULL) |
| 862 | +ereport(ERROR, |
| 863 | +(errcode(ERRCODE_INVALID_PARAMETER_VALUE), |
| 864 | +errmsg("COPY delimiter cannot be newline or carriage return"))); |
| 865 | + |
| 866 | +if (strchr(cstate->null_print,'\r')!=NULL|| |
| 867 | +strchr(cstate->null_print,'\n')!=NULL) |
| 868 | +ereport(ERROR, |
| 869 | +(errcode(ERRCODE_INVALID_PARAMETER_VALUE), |
| 870 | +errmsg("COPY null cannot use newline or carriage return"))); |
| 871 | + |
| 872 | +/* Disallow backslash in non-CSV mode */ |
| 873 | +if (!cstate->csv_mode&&strchr(cstate->delim,'\\')!=NULL) |
| 874 | +ereport(ERROR, |
| 875 | +(errcode(ERRCODE_INVALID_PARAMETER_VALUE), |
| 876 | +errmsg("COPY delimiter cannot be backslash"))); |
| 877 | + |
859 | 878 | /* Check header */
|
860 | 879 | if (!cstate->csv_mode&&cstate->header_line)
|
861 | 880 | ereport(ERROR,
|
|