Index: src/backend/commands/copy.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/commands/copy.c,v retrieving revision 1.285 diff -c -r1.285 copy.c *** src/backend/commands/copy.c 20 Jun 2007 02:02:49 -0000 1.285 --- src/backend/commands/copy.c 27 Jul 2007 04:13:15 -0000 *************** *** 926,944 **** (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("COPY force not null only available using COPY FROM"))); - /* Don't allow the delimiter to appear in the null string. */ - if (strchr(cstate->null_print, cstate->delim[0]) != NULL) - ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("COPY delimiter must not appear in the NULL specification"))); - - /* Don't allow the CSV quote char to appear in the null string. */ - if (cstate->csv_mode && - strchr(cstate->null_print, cstate->quote[0]) != NULL) - ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("CSV quote character must not appear in the NULL specification"))); - /* Disallow file COPY except to superusers. */ if (!pipe && !superuser()) ereport(ERROR, --- 926,931 ---- *************** *** 2888,2894 **** { bool found_delim = false; bool in_quote = false; - bool saw_quote = false; char *start_ptr; char *end_ptr; int input_len; --- 2875,2880 ---- *************** *** 2921,2927 **** /* start of quoted field (or part of field) */ if (c == quotec && !in_quote) { - saw_quote = true; in_quote = true; continue; } --- 2907,2912 ---- *************** *** 2971,2977 **** /* Check whether raw input matched null marker */ input_len = end_ptr - start_ptr; ! if (!saw_quote && input_len == cstate->null_print_len && strncmp(start_ptr, cstate->null_print, input_len) == 0) fieldvals[fieldno] = NULL; --- 2956,2962 ---- /* Check whether raw input matched null marker */ input_len = end_ptr - start_ptr; ! if (input_len == cstate->null_print_len && strncmp(start_ptr, cstate->null_print, input_len) == 0) fieldvals[fieldno] = NULL;