diff --git a/mysql_fdw.c b/mysql_fdw.c index 6181ffb..21913f4 100644 --- a/mysql_fdw.c +++ b/mysql_fdw.c @@ -422,6 +422,7 @@ mysqlPlanForeignScan(Oid foreigntableid, PlannerInfo *root, RelOptInfo *baserel) errmsg("failed to initialise the MySQL connection object") )); + mysql_options(conn, MYSQL_SET_CHARSET_NAME, GetDatabaseEncodingName()); if (!mysql_real_connect(conn, svr_address, svr_username, svr_password, svr_database, svr_port, NULL, 0)) ereport(ERROR, (errcode(ERRCODE_FDW_UNABLE_TO_ESTABLISH_CONNECTION), @@ -535,6 +536,7 @@ mysqlBeginForeignScan(ForeignScanState *node, int eflags) errmsg("failed to initialise the MySQL connection object") )); + mysql_options(conn, MYSQL_SET_CHARSET_NAME, GetDatabaseEncodingName()); if (!mysql_real_connect(conn, svr_address, svr_username, svr_password, svr_database, svr_port, NULL, 0)) ereport(ERROR, (errcode(ERRCODE_FDW_UNABLE_TO_ESTABLISH_CONNECTION), @@ -578,6 +580,7 @@ mysqlIterateForeignScan(ForeignScanState *node) /* Execute the query, if required */ if (!festate->result) { + mysql_query(festate->conn, "SET time_zone = '+00:00'"); if (mysql_query(festate->conn, festate->query) != 0) { char *err = pstrdup(mysql_error(festate->conn)); @@ -589,7 +592,7 @@ mysqlIterateForeignScan(ForeignScanState *node) } /* Guess the query succeeded then */ - festate->result = mysql_store_result(festate->conn); + festate->result = mysql_use_result(festate->conn); } /* Cleanup */ @@ -690,6 +693,7 @@ mysqlGetForeignRelSize(PlannerInfo *root, RelOptInfo *baserel, Oid foreigntablei errmsg("failed to initialise the MySQL connection object") )); + mysql_options(conn, MYSQL_SET_CHARSET_NAME, GetDatabaseEncodingName()); if (!mysql_real_connect(conn, svr_address, svr_username, svr_password, svr_database, svr_port, NULL, 0)) ereport(ERROR, (errcode(ERRCODE_FDW_UNABLE_TO_ESTABLISH_CONNECTION),