Use pg_get_serial_sequence() to get serial sequence of identity columns or serial...
authorHiroshi Inoue <h-inoue@dream.email.ne.jp>
Fri, 22 Sep 2017 03:46:43 +0000 (12:46 +0900)
committerHiroshi Inoue <h-inoue@dream.email.ne.jp>
Fri, 22 Sep 2017 05:05:26 +0000 (14:05 +0900)
convert.c

index 4f1a0a63a3943da17b8f7dcf01d9e4485cedb6ee..cf18ae5ae53dda61aeca6ecd89583060e613fb2a 100644 (file)
--- a/convert.c
+++ b/convert.c
@@ -3709,20 +3709,17 @@ inner_process_tokens(QueryParse *qp, QueryBuild *qb)
                        char relcnv[128];
                        const char *column_name = (const char *) QR_get_value_backend_text(coli->result, i, COLUMNS_COLUMN_NAME);
 
-                       CVT_APPEND_STR(qb, "currval('");
+                       CVT_APPEND_STR(qb, "currval(pg_get_serial_sequence('");
                        if (NAME_IS_VALID(conn->schemaIns))
                        {
                            CVT_APPEND_STR(qb, identifierEscape((const SQLCHAR *) SAFE_NAME(conn->schemaIns), SQL_NTS, conn, relcnv, sizeof(relcnv), TRUE));
                            CVT_APPEND_STR(qb, ".");
                        }
-                       identifierEscape((const SQLCHAR *) SAFE_NAME(conn->tableIns), SQL_NTS, conn, relcnv, sizeof(relcnv), TRUE);
-                       /* remove the last " */
-                       relcnv[strlen(relcnv) - 1] = '\0';
-                       CVT_APPEND_STR(qb, relcnv);
-                       CVT_APPEND_STR(qb, "_");
+                       CVT_APPEND_STR(qb, identifierEscape((const SQLCHAR *) SAFE_NAME(conn->tableIns), SQL_NTS, conn, relcnv, sizeof(relcnv), TRUE));
+                       CVT_APPEND_STR(qb, "','");
                        if (NULL != column_name)
-                           CVT_SPECIAL_CHARS(qb, column_name, SQL_NTS);
-                       CVT_APPEND_STR(qb, "_seq\"'::regclass)");
+                           CVT_APPEND_STR(qb, identifierEscape((const SQLCHAR *) column_name, SQL_NTS, conn, relcnv, sizeof(relcnv), FALSE));
+                       CVT_APPEND_STR(qb, "')::regclass)");
                    }
                    converted = TRUE;
                    break;