*** copy.c.old Sat Jan 17 22:17:58 2004 --- copy.c Sat Jan 17 23:06:30 2004 *************** *** 226,283 **** token = strtokx(NULL, whitespace, NULL, NULL, 0, false, pset.encoding); ! /* ! * Allows old COPY syntax for backward compatibility 2002-06-19 ! */ ! if (token && strcasecmp(token, "using") == 0) { token = strtokx(NULL, whitespace, NULL, NULL, 0, false, pset.encoding); ! if (!(token && strcasecmp(token, "delimiters") == 0)) ! goto error; token = strtokx(NULL, whitespace, NULL, "'", '\\', false, pset.encoding); if (!token) goto error; result->delim = xstrdup(token); - token = strtokx(NULL, whitespace, NULL, NULL, - 0, false, pset.encoding); - } - - if (token) - { - if (strcasecmp(token, "with") != 0) - goto error; - while ((token = strtokx(NULL, whitespace, NULL, NULL, - 0, false, pset.encoding)) != NULL) - { - if (strcasecmp(token, "delimiter") == 0) - { - token = strtokx(NULL, whitespace, NULL, "'", - '\\', false, pset.encoding); - if (token && strcasecmp(token, "as") == 0) - token = strtokx(NULL, whitespace, NULL, "'", - '\\', false, pset.encoding); - if (token) - result->delim = xstrdup(token); - else - goto error; - } - else if (strcasecmp(token, "null") == 0) - { - token = strtokx(NULL, whitespace, NULL, "'", - '\\', false, pset.encoding); - if (token && strcasecmp(token, "as") == 0) - token = strtokx(NULL, whitespace, NULL, "'", - '\\', false, pset.encoding); - if (token) - result->null = xstrdup(token); - else - goto error; - } - else - goto error; - } } free(line); --- 226,252 ---- token = strtokx(NULL, whitespace, NULL, NULL, 0, false, pset.encoding); ! // Discard both "with" and "using" as syntactically neutral ! if (token && ! (strcasecmp(token, "using") == 0 || ! strcasecmp(token, "with") == 0)) { token = strtokx(NULL, whitespace, NULL, NULL, 0, false, pset.encoding); ! } ! ! /* ! * Allow any combination of "with"|"using" and "delimiter"|"delimiters" ! */ ! if (token && ! (strcasecmp(token, "delimiters") == 0 || ! strcasecmp(token, "delimiter") == 0)) ! { token = strtokx(NULL, whitespace, NULL, "'", '\\', false, pset.encoding); if (!token) goto error; result->delim = xstrdup(token); } free(line);