Wenn ich die PostgreSQL 9.5 hstore()
Konstruktion Funktion auf einem row
Objekt in einer Abfrage verwenden, scheint es nur Spalten in dieser Zeile, die die text
oder integer
Datentypen sind. Ich kann sehen, dass meine Spalten timestamp
und character varying
standardmäßig aus dem HSTORE-Objekt weggelassen werden, das zurückkommt.Funktioniert die HSTORE() -Funktion von Postgres nur mit text/integer-Datentypen in 9.5?
In PostgreSQL 9.3 Aufbau eines hstore
Objekts würde timestamp
und character varying
Spalten der Zeile auch enthalten, wie kann ich dieses Verhalten zurück erhalten?
Insbesondere DDL meine Tisch wie folgt aussieht:
CREATE TABLE public.sessions
(
id integer NOT NULL DEFAULT nextval('sessions_id_seq'::regclass),
session_id character varying(255) NOT NULL,
data text,
created_at timestamp without time zone,
updated_at timestamp without time zone,
CONSTRAINT sessions_pkey PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
Unterhalb der Ausgang ist ein hstore
Konstruktor ausgeführt wird; beachten Sie, dass die session_id
, created_at
und updated_at
Spalten (Schlüssel) nicht zum hstore auch hinzugefügt werden, wenn ihre Werte nicht null sind:
select hstore(sessions.*) from sessions limit 1;
hstore
---------------------------------------------------------------
"id"=>"15435216", "data"=>"DjfBv="
(1 row)
Hmm das Schema mit 'public.sessions' Qualifying tat es nicht reparieren, obwohl guter Gedanke. Ich bin relativ positiv, es ist die einzige "Sitzung" Tabelle in dieser Datenbank geschweige denn Schema. Vielleicht ist ein Problem mit dem Betriebssystem/Verteilung von Postgres ich benutze. Ich habe bestätigt, dass es perfekt auf meiner Ubuntu-Installation von 9.3 funktioniert (mit 'postgresql-contrib-9.3' installiert von apt-get für das hstore-Modul), während das problematische über das MSI-Installationsprogramm unter Windows 10 installiert wurde und eine Version von 9.5.3. – depthfirstdesigner
@nomizzz: Nun, es muss * einige * Erklärungen geben, aber ich sehe nicht, wie das den Unterschied machen würde. Ich habe 9.5.3 unter Windows 7 getestet und es funktioniert wie erwartet. –
Einverstanden - jetzt, da ich weiß, dass dies das erwartete Verhalten auf 9.5 ist, ist es wahrscheinlich, dass einige Konfigurationseinstellungen oder Bereichsdefinitionen in den Standardeinstellungen, die mir fehlen, anders sind. Ich melde mich zurück, wenn ich es herausgefunden habe. – depthfirstdesigner