diff --git a/execute.c b/execute.c index 9afcdf7..a6900b7 100644 --- a/execute.c +++ b/execute.c @@ -863,45 +863,34 @@ SC_setInsertedTable(StatementClass *stmt, RETCODE retval) NULL_THE_NAME(conn->tableIns); if (!SQL_SUCCEEDED(retval)) return; - ptr = NULL; - if (IDENTIFIER_QUOTE == *cmd) + while (TRUE) { - if (ptr = strchr(cmd + 1, IDENTIFIER_QUOTE), NULL == ptr) - return; - if ('.' == ptr[1]) + if (IDENTIFIER_QUOTE == *cmd) { + if (ptr = strchr(cmd + 1, IDENTIFIER_QUOTE), NULL == ptr) + return; len = ptr - cmd - 1; - STRN_TO_NAME(conn->schemaIns, cmd + 1, len); - cmd = ptr + 2; - ptr = NULL; + cmd++; + ptr++; } - } - else - { - if (ptr = strchr(cmd + 1, '.'), NULL != ptr) + else { - len = ptr - cmd; - STRN_TO_NAME(conn->schemaIns, cmd, len); - cmd = ptr + 1; - ptr = NULL; + if (ptr = strchr(cmd + 1, '.'), NULL != ptr) + len = ptr - cmd; + else + { + ptr = cmd; + while (*ptr && !isspace((UCHAR) *ptr)) ptr++; + len = ptr - cmd; + } } - } - if (IDENTIFIER_QUOTE == *cmd && NULL == ptr) - { - if (ptr = strchr(cmd + 1, IDENTIFIER_QUOTE), NULL == ptr) - return; - } - if (IDENTIFIER_QUOTE == *cmd) - { - len = ptr - cmd - 1; - STRN_TO_NAME(conn->tableIns, cmd + 1, len); - } - else - { - ptr = cmd; - while (*ptr && !isspace((UCHAR) *ptr)) ptr++; - len = ptr - cmd; + if (NAME_IS_VALID(conn->tableIns)) + MOVE_NAME(conn->schemaIns, conn->tableIns); STRN_TO_NAME(conn->tableIns, cmd, len); + if ('.' == *ptr) + cmd = ptr + 1; + else + break; } }