Textarray in C-Funktion

Fragen, Probleme etc. zu den prozedularen Sprachen ( PL/Tcl, PL/Perl und PL/Python).
Antworten
Jens
Benutzer
Beiträge: 44
Registriert: Do 3. Apr 2008, 13:15

Textarray in C-Funktion

Beitrag von Jens » Di 8. Apr 2008, 09:24

Hallo,
ich möchte einer C-Funktion Arrays mit Textelementen übergeben.
Ich weiß schon, wie man in Postgres Arrays an eine C-Funktion übergibt und ein Real-Wert-Array kann ich auch schon auslesen. Bei einem Text-Wert-Array gelingt mir das nicht.
Wer kann mir helfen ?
Jens

ads
Erfahrener Benutzer
Beiträge: 4148
Registriert: Mi 8. Feb 2006, 10:58
Wohnort: MD
Kontaktdaten:

Beitrag von ads » Di 8. Apr 2008, 12:13

Intern bestehen die Arrays aus den jeweiligen PostgreSQL Datentypen. Du musst also mit den passenden Funktionen darauf zugreifen. Zahlenwerte sind in der Regel direkt im Datentyp abgelegt, bei Texten ist das jedoch nur ein Pointer auf "woanders" hin.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören Bild

Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

PostgreSQL Service & Support

Jens
Benutzer
Beiträge: 44
Registriert: Do 3. Apr 2008, 13:15

Text-Array

Beitrag von Jens » Di 8. Apr 2008, 13:14

Hallo ads,
so richtig hilft mir Deine Antwort noch nicht weiter.
Bei einem Float4-Array kann ich die übergebenen Werte mit der Zuweisung:
(float4*) ARR_DATA_PTR(ArrayType) einem Float-Pointer übergeben.
Bei einem Text-Array ist mir das noch nicht gelungen.
Jens

ads
Erfahrener Benutzer
Beiträge: 4148
Registriert: Mi 8. Feb 2006, 10:58
Wohnort: MD
Kontaktdaten:

Beitrag von ads » Di 8. Apr 2008, 13:26

Ich habe noch keine Arrays in C genutzt, daher kann ich dir da nicht so richtig weiterhelfen. Hast du mal geschaut, wie Contrib Module das machen bzw. ob du im PG Source selbst etwas dazu findest?
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören Bild

Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

PostgreSQL Service & Support

Jens
Benutzer
Beiträge: 44
Registriert: Do 3. Apr 2008, 13:15

contrib module

Beitrag von Jens » Di 8. Apr 2008, 15:10

Hallo ads,
vielen Dank für Deine Hilfe.
Ich habe schon bei Contrib Module nachgeschaut.
Ich verwende auch den Beispielcode von dort. Der Code funktionierte auch bis zu einer Versionsänderung. Außerdem ist der Code wie Magie. Ich kann die Verwendung verschiedener Tools darin schlecht nachvollziehen.
Ich hatte die Hoffnung, dass es andere Möglichkeiten gibt, die eleganter sind und über Versionsänderungen hinaus reichen.
Jens

akretschmer
Erfahrener Benutzer
Beiträge: 7629
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Beitrag von akretschmer » Mi 9. Apr 2008, 07:16

Jens hat geschrieben:Hallo,
ich möchte einer C-Funktion Arrays mit Textelementen übergeben.
Ich weiß schon, wie man in Postgres Arrays an eine C-Funktion übergibt und ein Real-Wert-Array kann ich auch schon auslesen. Bei einem Text-Wert-Array gelingt mir das nicht.
Wer kann mir helfen ?
Jens


Klappt es mittlerweile? Was willst Du einklich erreichen mit C, was mit pl/pgsql nicht geht?

Andreas
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Antworten