connection.select_value gibt nur Zeichenfolgen in Postgres mit pg gem zurück

9

Ich konvertiere eine Rails App von mysql (mysql2 gem) nach postgres (pg gem).

Mit% mysql ruft ActiveRecord::Base.connection.select_value entsprechend den Daten typisierte Rückgabewerte auf, zum Beispiel:

%Vor%

Bei Postgres gibt connection.select_value jedoch immer eine Zeichenkette zurück:

%Vor%

Das hat ein paar Unit-Tests gekostet, und während diese reparierbar sind, bin ich sicher, dass wir anderen Code haben, der sich auf diese Rückgabewerte stützt. Gibt es eine Möglichkeit, richtig eingegebene Rückgabewerte von connection.select_value zu erhalten, wenn Postgres verwendet werden?

    
Monica Woods 24.09.2012, 19:04
quelle

2 Antworten

4

Die kurze Antwort ist nein. Der 'pg' Treiber bietet absichtlich eine so dünne Schicht wie möglich über den nativen 'libpq' Treiber. Typecasting wird nicht durchgeführt, da dies in der Verantwortung höherer Bibliotheken liegt, die Einblick in die Domäne haben, in der die Ergebnisse verwendet werden. Die Gründe für diese Entscheidung sind im PostgreSQL-Wiki dokumentiert, und ich würde mich freuen, es mit Ihnen weiter zu besprechen auf der Mailingliste .

    
Michael Granger 24.09.2012, 21:39
quelle
0

Für diejenigen, die hier auf der Suche nach einer ActiveRecord-Attribut (Rails) spezifischen Antwort sind: Ich habe einige Tests durchgeführt ( Ссылка ) und festgestellt, dass:

%Vor%

gibt einen String mit Rails & lt; 4 und ein Fixnum mit Rails & gt; = 4.

Der Postgres-Adapter leitet die Typen von der Datenbank an das Persistenzmodul weiter, so dass das Casting transparent durchgeführt werden kann.

    
gamov 15.10.2014 08:18
quelle