Weniger Felder als Spalten [erledigt]
Moderator: Moderatoren
- Klaus Schuster
- Foren-Administrator
- Beiträge: 371
- Registriert: Do, 24. Jan 2008 10:01
- Wohnort: 90762 Fürth
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 9 Mal
Weniger Felder als Spalten [erledigt]
Moin,
bei einem Einsatz von
oStmt := DacSqlStatement( ::DacSession ):fromChar( "select * from artikel" )
cAlias := oStmt:Build():Query( USQL_RESULT_WORKAREA )
erwarte ich, das
(cAlias)->(Len(dbStruct()))
die gleiche Anzahl an Feldern zurückgibt, wie die Tabelle 'artikel' Spalten enthält; tut sie aber nicht: Es ist stets ein Feld weniger. In der Ergebnisdatei fehlt immer die letzte Spalte (unabhängig von der Tabelle und dem Spaltentyp).
Ermittelt in Version 2.0 Pbuild 1159; ist es in der aktuellen Version auch so?
bei einem Einsatz von
oStmt := DacSqlStatement( ::DacSession ):fromChar( "select * from artikel" )
cAlias := oStmt:Build():Query( USQL_RESULT_WORKAREA )
erwarte ich, das
(cAlias)->(Len(dbStruct()))
die gleiche Anzahl an Feldern zurückgibt, wie die Tabelle 'artikel' Spalten enthält; tut sie aber nicht: Es ist stets ein Feld weniger. In der Ergebnisdatei fehlt immer die letzte Spalte (unabhängig von der Tabelle und dem Spaltentyp).
Ermittelt in Version 2.0 Pbuild 1159; ist es in der aktuellen Version auch so?
Zuletzt geändert von Klaus Schuster am Fr, 01. Mai 2020 6:57, insgesamt 1-mal geändert.
Gruß Klaus
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2128
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: Weniger Felder als Spalten
Servus Klaus,
12-Version PG-Server? Dann nein, ist seit 1185 gefixed.
Mit < 12 hast den Fehler auch mit Deiner Xbase++ - Version nicht.
12-Version PG-Server? Dann nein, ist seit 1185 gefixed.
Mit < 12 hast den Fehler auch mit Deiner Xbase++ - Version nicht.
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- Klaus Schuster
- Foren-Administrator
- Beiträge: 371
- Registriert: Do, 24. Jan 2008 10:01
- Wohnort: 90762 Fürth
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 9 Mal
Re: Weniger Felder als Spalten
Servus Werner und Danke,
ich arbeite mit der 12er Version. Interessant, dass der Fehler mit einer älteren Version nicht auftreten würde. Das bedeutet doch, dass bei einer neuen Datenbank-Version vor dem Einsatz mit XBase unbedingt geprüft werden sollte, ob alle Abfragen noch genauso funktionieren wie erwartet. Dies wiederum schreit nach einer Testanwendung die anhand einer Testdatenbank und einer Datei mit allen erwarteten Ergebnissen die Rückgaben der neuen Version vergleicht und Abweichungen meldet.
ich arbeite mit der 12er Version. Interessant, dass der Fehler mit einer älteren Version nicht auftreten würde. Das bedeutet doch, dass bei einer neuen Datenbank-Version vor dem Einsatz mit XBase unbedingt geprüft werden sollte, ob alle Abfragen noch genauso funktionieren wie erwartet. Dies wiederum schreit nach einer Testanwendung die anhand einer Testdatenbank und einer Datei mit allen erwarteten Ergebnissen die Rückgaben der neuen Version vergleicht und Abweichungen meldet.
Gruß Klaus
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2128
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: Weniger Felder als Spalten [erledigt]
Bitte und ja, wäre sicherlich nicht verkehrt. Bisher haben wir bei uns das immer selber getestet, also neue PG-Versionen werden zuerst grundlegend mit bestehenden Test-Anwendungen und danach mit unseren Inhouse-Anwendungen getestet.
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Weniger Felder als Spalten
hi,
unter Xbase++ v2.x wird doch IMHO der Source der 32 Bit Version genutzt.
nun gehst du davon aus da du mit "jeder" 32 Bit Client Version auf einen PG-Server zugreifen kann ...
---
ich nutze es ja "native" d.h. ich verwende
aber das gibt evtl. Problem wenn noch "andere" am PG-Server hängen die eine andere Client DLL Version verwenden.
deshalb habe ich verschiedene DLL "Sätze" für den entsprechenden PG-Server.
die PostgreSQL v12 gibt es doch nur noch als 64 Bit Version, oder ?Klaus Schuster hat geschrieben: ↑Fr, 01. Mai 2020 6:57 ich arbeite mit der 12er Version. Interessant, dass der Fehler mit einer älteren Version nicht auftreten würde. Das bedeutet doch, dass bei einer neuen Datenbank-Version vor dem Einsatz mit XBase unbedingt geprüft werden sollte, ob alle Abfragen noch genauso funktionieren wie erwartet.
unter Xbase++ v2.x wird doch IMHO der Source der 32 Bit Version genutzt.
nun gehst du davon aus da du mit "jeder" 32 Bit Client Version auf einen PG-Server zugreifen kann ...
---
ich nutze es ja "native" d.h. ich verwende
v7.2.1
libpq.dll
v8.4.2
comerr32.dll
gssapi32.dll
k5sprt32.dll
krb5_32.dll
libeay32.dll
libiconv-2.dll
libintl-8.dll
libpq.dll
ssleay32.dll
nun kann ich im Prinzip mit der alten libpq.dll v7.2.1 auf der PG v11 Server zugreifen und arbeiten ...v9.5.2 - v11
libeay32.dll
libecpg.dll
libecpg_compat.dll
libiconv-2.dll
libintl-8.dll
libpgtypes.dll
libpq.dll
libxml2.dll
libxslt.dll
ssleay32.dll
zlib1.dll
aber das gibt evtl. Problem wenn noch "andere" am PG-Server hängen die eine andere Client DLL Version verwenden.
deshalb habe ich verschiedene DLL "Sätze" für den entsprechenden PG-Server.
ich würde also mal bei Alaska anfragen welche PG-Version für Xbase++ v2.x "freigegeben" ist.Klaus Schuster hat geschrieben: ↑Fr, 01. Mai 2020 6:57 Dies wiederum schreit nach einer Testanwendung die anhand einer Testdatenbank und einer Datei mit allen erwarteten Ergebnissen die Rückgaben der neuen Version vergleicht und Abweichungen meldet.
gruss by OHR
Jimmy
Jimmy
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2518
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Weniger Felder als Spalten [erledigt]
Hallo Jimmy
schau dir mal den Sourcecode von LIBPQ an. Diesen findest du im Sourcetree: /postgresql-12.2/src/interfaces/libpq
Da siehst du dass diese zum übsersetzten als 32 oder 64 Bit Version vorbereitet ist. Am einfachsten kannst du dies mit VC auch selbst tun.
Auch die 32 Bit libpq Version kann 64 Bit Wert zurückgeben. Mit den neueren xbase++ musst du dazu die extern Kommandos verwenden oder die entsprechenden Funktionen von ot4xb. Mit dllcall() gehen 64 Bit returnwerte wirklich nicht.
Eine aktuelle LIBPQ als 32 Bit findest du auch immer in PGAdmin4......
schau dir mal den Sourcecode von LIBPQ an. Diesen findest du im Sourcetree: /postgresql-12.2/src/interfaces/libpq
Da siehst du dass diese zum übsersetzten als 32 oder 64 Bit Version vorbereitet ist. Am einfachsten kannst du dies mit VC auch selbst tun.
Auch die 32 Bit libpq Version kann 64 Bit Wert zurückgeben. Mit den neueren xbase++ musst du dazu die extern Kommandos verwenden oder die entsprechenden Funktionen von ot4xb. Mit dllcall() gehen 64 Bit returnwerte wirklich nicht.
Das bezieht sich nur auf den Server.die PostgreSQL v12 gibt es doch nur noch als 64 Bit Version, oder ?
Eine aktuelle LIBPQ als 32 Bit findest du auch immer in PGAdmin4......
Valar Morghulis
Gruss Carlo
Gruss Carlo
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Weniger Felder als Spalten [erledigt]
hi Carlo,
wenn man PgDBE mit der ISAM-Emulation einsetzt geht es doch wohl über die "eingebaute" LibPQ und die ist sicherlich NICHT auf v12 Stand.
---
meiner Aufzählung kann man entnehmen welche "zusätzlichen" DLL man für die LibPQ.DLL benötigt.
da die nicht bei Xbase++ v2.x enthalten sind kann man also darauf schliessen welchen Stand die "eingebaute" LibPQ hat.
nun war es immer schon schlecht wenn man verschiedene Versionen verwendet ... auch wenn man es nicht "merkt" ...
ich kann also nur empfehlen PgDBE mit der von Alaska "freigegebenen" Version zu betreiben.
wenn man PgDBE mit der ISAM-Emulation einsetzt geht es doch wohl über die "eingebaute" LibPQ und die ist sicherlich NICHT auf v12 Stand.
---
meiner Aufzählung kann man entnehmen welche "zusätzlichen" DLL man für die LibPQ.DLL benötigt.
da die nicht bei Xbase++ v2.x enthalten sind kann man also darauf schliessen welchen Stand die "eingebaute" LibPQ hat.
nun war es immer schon schlecht wenn man verschiedene Versionen verwendet ... auch wenn man es nicht "merkt" ...
ich kann also nur empfehlen PgDBE mit der von Alaska "freigegebenen" Version zu betreiben.
gruss by OHR
Jimmy
Jimmy
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2518
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Weniger Felder als Spalten [erledigt]
Anscheinend ist es die 8.3.1.8104 aus 2008........
Valar Morghulis
Gruss Carlo
Gruss Carlo
- Klaus Schuster
- Foren-Administrator
- Beiträge: 371
- Registriert: Do, 24. Jan 2008 10:01
- Wohnort: 90762 Fürth
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 9 Mal
Re: Weniger Felder als Spalten [erledigt]
Das Problem kann auch auftreten, wenn eine Spalte einen Typ hat, der nicht von XBase konvertiert wird (z.B. UUID). Die Lösung (Dank Werners Hilfe) besteht in
4.2.9. Type Casts
A type cast specifies a conversion from one data type to another. PostgreSQL accepts two equivalent syntaxes for type casts:
CAST ( expression AS type )
expression::type
The CAST syntax conforms to SQL; the syntax with :: is historical PostgreSQL usage.
When a cast is applied to a value expression of a known type, it represents a run-time type conversion. The cast will succeed only if a suitable type conversion operation has been defined. Notice that this is subtly different from the use of casts with constants, as shown in Section 4.1.2.7. A cast applied to an unadorned string literal represents the initial assignment of a type to a literal constant value, and so it will succeed for any type (if the contents of the string literal are acceptable input syntax for the data type).
https://www.postgresql.org/docs/current ... sions.html
4.2.9. Type Casts
A type cast specifies a conversion from one data type to another. PostgreSQL accepts two equivalent syntaxes for type casts:
CAST ( expression AS type )
expression::type
The CAST syntax conforms to SQL; the syntax with :: is historical PostgreSQL usage.
When a cast is applied to a value expression of a known type, it represents a run-time type conversion. The cast will succeed only if a suitable type conversion operation has been defined. Notice that this is subtly different from the use of casts with constants, as shown in Section 4.1.2.7. A cast applied to an unadorned string literal represents the initial assignment of a type to a literal constant value, and so it will succeed for any type (if the contents of the string literal are acceptable input syntax for the data type).
https://www.postgresql.org/docs/current ... sions.html
Gruß Klaus
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2128
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: Weniger Felder als Spalten [erledigt]
ich darf mit einem Beispiel ergänzen:
Liefert dann die Spalte plz als Text zurück.
Code: Alles auswählen
select name, plz::text, strasse from customer
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- Klaus Schuster
- Foren-Administrator
- Beiträge: 371
- Registriert: Do, 24. Jan 2008 10:01
- Wohnort: 90762 Fürth
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 9 Mal
Re: Weniger Felder als Spalten [erledigt]
Hallo Werner,
der Einsatz von :: entspricht nicht dem SQL-Standard:
The CAST syntax conforms to SQL; the syntax with :: is historical PostgreSQL usage.
der Einsatz von :: entspricht nicht dem SQL-Standard:
The CAST syntax conforms to SQL; the syntax with :: is historical PostgreSQL usage.
Gruß Klaus
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2128
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: Weniger Felder als Spalten [erledigt]
oder so
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>