X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fpsql-reader.c;h=4cbd8409eae549cf6cd1118a001c698e46a88125;hb=3c70826f9e59d2008305ed8305554a532851f6d9;hp=378a56affbb45f66fd04a889fcc8c53d5fc66941;hpb=0655c32db3a849462fbcebd73d8c659d814e794d;p=pspp diff --git a/src/data/psql-reader.c b/src/data/psql-reader.c index 378a56affb..4cbd8409ea 100644 --- a/src/data/psql-reader.c +++ b/src/data/psql-reader.c @@ -16,23 +16,24 @@ #include -#include -#include -#include -#include +#include "data/psql-reader.h" + +#include #include #include -#include "psql-reader.h" -#include "variable.h" -#include "format.h" -#include "calendar.h" - -#include -#include -#include +#include "data/calendar.h" +#include "data/casereader-provider.h" +#include "data/dictionary.h" +#include "data/format.h" +#include "data/variable.h" +#include "libpspp/i18n.h" +#include "libpspp/message.h" +#include "libpspp/misc.h" +#include "libpspp/str.h" -#include "minmax.h" +#include "gl/xalloc.h" +#include "gl/minmax.h" #include "gettext.h" #define _(msgid) gettext (msgid) @@ -229,6 +230,7 @@ psql_open_reader (struct psql_read_info *info, struct dictionary **dict) int n_fields, n_tuples; PGresult *qres = NULL; casenumber n_cases = CASENUMBER_MAX; + const char *encoding; struct psql_reader *r = xzalloc (sizeof *r); struct string query ; @@ -285,21 +287,19 @@ psql_open_reader (struct psql_read_info *info, struct dictionary **dict) r->postgres_epoch = calendar_gregorian_to_offset (2000, 1, 1, NULL); - - /* Create the dictionary and populate it */ - *dict = r->dict = dict_create (); - { const int enc = PQclientEncoding (r->conn); /* According to section 22.2 of the Postgresql manual a value of zero (SQL_ASCII) indicates "a declaration of ignorance about the encoding". - Accordingly, we don't set the dictionary's encoding + Accordingly, we use the default encoding if we find this value. */ - if ( enc != 0 ) - dict_set_encoding (r->dict, pg_encoding_to_char (enc)); + encoding = enc ? pg_encoding_to_char (enc) : get_default_encoding (); + + /* Create the dictionary and populate it */ + *dict = r->dict = dict_create (encoding); } /*