Okay das mit den 255 Bytes reserviert hab ich verstanden.

Nur wo der Speicher von dem Zeiger reserviert und freigegeben wird, ist mir derzeit völlig unklar. In der Beschreibung steht ja
PQescapeBytea ergibt eine Version der Binärdaten in from, in der alle Sonderzeichen durch Fluchtfolgen ersetzt wurden, sodass sie vom Zeichenkettenparser und von der bytea-Eingabefunktion ordnungsgemäß verarbeitet werden können. Der Ausgabepuffer wird mit malloc() angelegt. Ein abschließendes Null-Byte wird angehängt.
Würde ja bedeuten, dass ich nach meinem sprintf Befehl den Speicher direkt (selbst) freigeben muss, da sonst beim nächsten Aufruf neuer Speicher reserviert wird.
Ja ich weis das ist zwar der Befehl
PQescapeBytea, aber er ist fast genauso wie
PQescapeByteaConn, steht nur leider nicht in meinem Postgresql Handbuch drin.
Was für Informationen sollen denn in den 30 Byte gespeichert werden - wenn ich fragen darf?!
In den maximal 30 Bytes (meistens 9-12) werden die einzelnen Bustelegramme erfasst. Da hat fast jedes einzelne Bit eine Bedeutung zuzüglich Prüfsummen etc. Bisher hatte ich die Daten komplett in eine Struktur zerlegt in die Datenbank geschrieben. Dann hab ich festgestellt, dass das übertragen von 1 Mio Daten nach extern (selbst über DSL) viel zu lange dauert. Wenn ich die Daten binär übermittle und dann lokal wieder zerlege, könnte das deutlich schneller sein, als "reine ASCII" Zeichen zu übertragen.
Wichtig sind in der Datenbank eigentlich nur 4 Werte zum Eingrenzen oder Sortieren (Datum, Sender, Befehltyp, Datenwert). Die restlichen Infos sind nicht unwichtig, müssen aber nicht als einzelne Felder in die Datenbank. Somit finde ich es einfacher nur wenig Felder zu nutzen und bei Bedarf die eigentlichen Daten aus dem binären Feld herauszuholen.