Informix

Informix

Connect with Db2, Informix, Netezza, open source, and other data experts to gain value from your data, share insights, and solve problems.

 View Only
  • 1.  UUID

    Posted yesterday
    Edited by mark collins yesterday

    Is there an Informix function, either built-in or easily implemented, that will create a new UUID value?  Ideally, something that could be used in an INSERT statement, for instance.  Something like:

    INSERT INTO table_xyz
      ( uuid, name, rank, serial_nbr)
    VALUES (make_uuid(), "John Doe", "PFC", 11552328);

    This would be for IDS 14.10.FC11.



    ------------------------------
    mark collins
    ------------------------------



  • 2.  RE: UUID

    Posted yesterday
    Ther is a GUID/UUID bladelet available 

    Cheers
    Paul

    Paul Watson
    Oninit LLC
    +1-913-387-7529
    www.oninit.com
    Oninit®️ is a registered trademark of Oninit LLC





  • 3.  RE: UUID

    Posted yesterday
    Looking at the docs ther should be a Java based one with the engine 

    Cheers
    Paul

    Paul Watson
    Oninit LLC
    +1-913-387-7529
    www.oninit.com
    Oninit®️ is a registered trademark of Oninit LLC





  • 4.  RE: UUID

    Posted yesterday

    Thanks Paul.

    I found the page I think you were referring to, and I ran the 'CREATE FUNCTION UUID() RETURNING CHAR(36) EXTERNAL NAME 'com.informix.judrs.IfxStrings.getUUID()' language java;' statement and granted permission to public.

    When I run 'SELECT UUID() FROM sysmaster:sysdual', I get the error message 'SQL Error (-9431): Can't find system class or method or library (/informix/current/extend/krakatoa/jre/bin/j9vm/libjvm.so).'

    I looked under /informix/current/extend/krakatoa and found that jre was a symlink pointing to /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.432.b06-2.el8.x86_64/jre, which does not exist on this server.  Running 'which java' returns /usr/lib/jvm/jre-17/bin/java.  I looked in /usr/lib/jvm/jre-17/bin, but there is no j9vm subdirectory.  I also tried a 'find /usr/lib/jvm/jre-17/bin -name libjvm.so', but got no results.  I eventually found it under /usr/lib/jvm/jre-17/lib/server/libjvm.so. 

    I can change the symlink /informix/current/extend/krakatoa/jre to point to /usr/lib/jvm/jre-17, which would at least get it in the correct vicinity.  But since the error is saying that it's trying to find libjvm.so in /informix/current/extend/krakatoa/jre/bin/j9vm/libjvm.so, that won't solve the problem.  My libjvm.so is in /informix/current/extend/krakatoa/jre/lib/server.

    Is there an environment variable or config parameter that can be set to change where the server is expecting this library?

    Thanks.



    ------------------------------
    mark collins
    ------------------------------



  • 5.  RE: UUID

    Posted yesterday
    Never used the Java one, but the C is (was) good. It uses the UUID libraries AFAIR

    Cheers
    Paul

    Paul Watson
    Oninit LLC
    +1-913-387-7529
    www.oninit.com
    Oninit®️ is a registered trademark of Oninit LLC





  • 6.  RE: UUID

    Posted yesterday

    I am not finding a C version of UUID in the online docs, just the Java version.  Can you paste a link to the C version?



    ------------------------------
    mark collins
    ------------------------------



  • 7.  RE: UUID

    Posted yesterday

    Looking in onconfig.std, I see:

    # JVPJAVAHOME  - Absolute path to the JRE.
    #                Defaults to $INFORMIXDIR/extend/krakatoa/jre
    #
    # JVPJAVALIB   - Path relative to JVPJAVAHOME where the shared
    #                libraries for the JRE are located.
    #                Platform dependant defaults are provided by.
    #
    # JVPJAVAVM    - Path relative to JVPJAVAHOME that points to the
    #                JVM shared library (libjvm.so or jvm.dll)
    #                Platform dependant defaults are provided by.
     
    JVPJAVAHOME              $INFORMIXDIR/extend/krakatoa/jre
    JVPJAVAVM
    JVPJAVALIB

    Since I've changed the symlink $INFORMIXDIR/extend/krakatoa/jre to point to our current JRE, I think I need to also set JVPJAVAVM to 'lib/server' or maybe './lib/server', since it's relative to JVPJAVAHOME.  If I'm reading the onconfig comments correctly, that would point the server to $INFORMIXDIR/extend/krakatoa/jre/lib/server/libjvm.so, which should address the error message I'm currently getting.

    I've tried 'onmode -wm JVPJAVAVM="./lib/server"' but I get "Configuration Parameter to be changed is not valid or not supported with this option."  Does this mean that I need to update the onconfig manually and restart the instance?  Or can the Admin API call make this change?



    ------------------------------
    mark collins
    ------------------------------



  • 8.  RE: UUID

    Posted yesterday
    Edited by mark collins yesterday

    After a bit of futzing around with those three onconfig parameters, I finally managed to get something that works.  I ended up with:

    JVPJAVAHOME              $INFORMIXDIR/extend/krakatoa/jre
    JVPJAVAVM                jvm
    JVPJAVALIB               /lib/server
    

    Those with sharp eyes will note that having JVPJAVAVM=jvm does not seem to match the description in the onconfig comments "Path relative to JVPJAVAHOME that points to the JVM shared library (libjvm.so or jvm.dll)".  Also, JVPJAVALIB=/lib/server does not match the description of "Path relative to JVPJAVAHOME ...".

    Regardless of those inconsistencies, I now can run "SELECT UUID() FROM sysmaster:sysdual" and get a valid UUID as a return.

    For those who are running Java external UDRs in their 14.10 instances, what values do you have in these three onconfig parameters?  Just wanting to see if anyone has something that looks cleaner than what I've got.  If not, I'll continue with what works, but if there is a cleaner way, I'd like to find it before migrating this to our user-acceptance and prod environments.

    Or I guess I could just rewrite the comments in my copy of onconfig.

    Thanks for looking.



    ------------------------------
    mark collins
    ------------------------------