/* PSPP - a program for statistical analysis.
- Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include <config.h>
-#include <data/casereader-provider.h>
-#include <libpspp/message.h>
-#include <gl/xalloc.h>
-#include <data/dictionary.h>
+#include "data/psql-reader.h"
+
+#include <inttypes.h>
#include <math.h>
#include <stdlib.h>
-#include "psql-reader.h"
-#include "variable.h"
-#include "format.h"
-#include "calendar.h"
-
-#include <inttypes.h>
-#include <libpspp/misc.h>
-#include <libpspp/str.h>
+#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/c-strcase.h"
+#include "gl/minmax.h"
+#include "gl/xalloc.h"
#include "gettext.h"
#define _(msgid) gettext (msgid)
{
unsigned long int vx = 0;
struct variable *var;
- char name[VAR_NAME_LEN + 1];
-
- if ( ! dict_make_unique_var_name (r->dict, suggested_name, &vx, name))
- {
- msg (ME, _("Cannot create variable name from %s"), suggested_name);
- return NULL;
- }
+ char *name;
+ name = dict_make_unique_var_name (r->dict, suggested_name, &vx);
var = dict_create_var (r->dict, name, width);
+ free (name);
+
var_set_both_formats (var, fmt);
if ( col != -1)
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 ;
{
const char *dt = PQparameterStatus (r->conn, "integer_datetimes");
- r->integer_datetimes = ( 0 == strcasecmp (dt, "on"));
+ r->integer_datetimes = ( 0 == c_strcasecmp (dt, "on"));
}
#if USE_SSL
}
}
- r->postgres_epoch =
- calendar_gregorian_to_offset (2000, 1, 1, NULL, NULL);
-
-
- /* Create the dictionary and populate it */
- *dict = r->dict = dict_create ();
+ r->postgres_epoch = calendar_gregorian_to_offset (2000, 1, 1, NULL);
{
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);
}
/*