Browse Source

DB driver PG: convert character varying without length to text (#2248)

* convert charcter varying without length to text

* use correct place to handle character varying without length modifier
Markus Metz 2 years ago
parent
commit
b3d121ea97
2 changed files with 5 additions and 4 deletions
  1. 1 1
      db/drivers/postgres/create_table.c
  2. 4 3
      db/drivers/postgres/describe.c

+ 1 - 1
db/drivers/postgres/create_table.c

@@ -128,7 +128,7 @@ int db__driver_create_table(dbTable * table)
     res = PQexec(pg_conn, db_get_string(&sql));
 
     if (!res || PQresultStatus(res) != PGRES_COMMAND_OK) {
-	db_d_append_error("%s\n%s\%s",
+	db_d_append_error("%s\n%s\n%s",
 			  _("Unable to grant select on table:"),
 			  db_get_string(&sql),
 			  PQerrorMessage(pg_conn));

+ 4 - 3
db/drivers/postgres/describe.c

@@ -131,9 +131,10 @@ int describe_table(PGresult * res, dbTable ** table, cursor * c)
 		       "some data may be damaged"), fname);
 
 	if (gpgtype == PG_TYPE_VARCHAR && fsize < 0) {
-	    G_warning(_("Column '%s' : type character varying is stored as varchar(250) "
-		       "some data may be lost"), fname);
-	    fsize = 250;
+	    /* character varying without length modifier: treat as text */
+	    gpgtype = PG_TYPE_TEXT;
+	    sqltype = DB_SQL_TYPE_TEXT;
+	    fsize = 1000;
 	}
 
 	if (gpgtype == PG_TYPE_BOOL)