Announcement

Collapse
No announcement yet.

UDFs unter Linux?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • UDFs unter Linux?

    Hallo,

    sind die vorgefertigten UDFs, die man für Firebird so bekommt, eigentlich Windows-spezifisch? Müssten ja, es sind ja DLLs...

    Wenn ja, kriegt man solche Standard-Funktionen wie bin_and, bin_or, strlen oder substrlen auch als UDF-Paket für Linux?

    Viele Grüße,

    Stefan

  • #2
    Hallo Stefan,
    Firebird für Linux kommt ebenfalls mit den UDF-Bibliotheken ib_udf und fbudf.
    <br>
    Thoma
    Thomas Steinmaurer

    Firebird Foundation Committee Member
    Upscene Productions - Database Tools for Developers
    Mein Blog

    Comment


    • #3
      Sehr schön :-) Vielen Dank für die Auskunft.

      Muss ich bei der Deklaration in der DB irgendwas beachten, oder läuft das genauso?

      Unter Windows hatte ich das Problem, dass die UDF-Bibliotheken nur gefunden wurden, wenn sie in einem Unterverzeichnis \UDF der Datenbank liegen. Wie ist das bei Linux? Müssen die noch irgendwo hinkopiert werden?

      Stefa

      Comment


      • #4
        Hallo Stefan,
        auch unter Linux müssen sich die UDF-Bibliotheken in einem /UDF Unterverzeichnis befinden (sofern dies nicht anders in firebird.conf konfiguriert wurde). Wichtig ist, dass Du bei der Deklaration einer UDF mit der DECLARE EXTERNAL FUNCTION ... Anweisung keine Pfadangaben machst, und auch keine Dateiendung verwendet wird. Eine neutrale UDF-Deklaration sieht z.B. wie folgt aus:
        <code>
        DECLARE EXTERNAL FUNCTION abs
        DOUBLE PRECISION
        RETURNS DOUBLE PRECISION BY VALUE
        ENTRY_POINT 'IB_UDF_abs' MODULE_NAME 'ib_udf';
        </code>
        Also: Keine Pfadangabe bei "ib_udf", und eine Dateiendung (z.B. ".dll") ist ebenfalls nicht vorhanden.
        <br>
        Thoma
        Thomas Steinmaurer

        Firebird Foundation Committee Member
        Upscene Productions - Database Tools for Developers
        Mein Blog

        Comment


        • #5
          Das heißt, wenn ich will, dass meine Anwendung prinzipiell mit Linux-FB *und* Windows-FB läuft, muss ich beide Versionen der UDFs bereithalten und die jeweils richtige nach [Datenbankpfad]\UDF kopieren, bevor die Datenbank erstellt wird, richtig?

          Ein bisschen umständlich, denn dann braucht meine Anwendung den Datenbankpfad sowohl aus Server-Sicht (damit der FB-Server ihn überhaupt findet) als auch aus Client-Sicht (damit die UDF-Dateien dorthin kopiert werden können). Für einen Anwender ist es u.U. nicht einfach, den Unterschied zwischen diesen beiden Pfadangaben (die ja auf dieselbe Datei zeigen) zu sehen und diese korrekt zu treffen.

          Aber führt kein Weg dran vorbei, oder?

          Stefa

          Comment


          • #6
            Hallo Stefan,
            nicht [Datenbankpfad]\UDF, sondern im \UDF Unterverzeichnis Deiner Firebird-Server Installation.
            Thoma
            Thomas Steinmaurer

            Firebird Foundation Committee Member
            Upscene Productions - Database Tools for Developers
            Mein Blog

            Comment

            Working...
            X