What would cause fcsvparser() to not be installed in v12.0.2-0

jordzillajordzilla Vertica Customer
edited March 2023 in General Discussion

We installed Vertica 12.0.2 on RHEL 8.6 with DISA STIGs applied (SELinux in Permissive mode).
Everything seems to have installed correctly and have a database running in EON-mode against MinIO.
But, when we tried to run a command that required fcsvparser() it failed with ERROR 3457.

INFO p.p.e.i.c.s.i.I18nImportServiceImpl - Running HP Vertica COPY ... INFO p.p.e.i.c.s.i.I18nImportServiceImpl - COPY plain_230303d34abd062d92f0b7d9ba("col0","col1","col2","col3","col4","col5","col6") from local '(PATH OMITTED)/f682bc98-05a2-4b81-adb7-0fe5eca09af0' PARSER fcsvparser(type='traditional', header='true', delimiter=',', enclosed_by='"', trim='false', escape=U&'\0015', reject_on_materialized_type_error='false') direct null '' record terminator E' INFO p.p.e.i.c.s.i.I18nImportServiceImpl - ' REJECTED DATA '(PATH OMITTED)/85ee30ff-5cf7-47fc-bfd0-57db735e8a5a'; INFO p.p.e.i.c.s.i.I18nImportServiceImpl - vsql:(PATH OMITTED)/4d917cd6-30b1-4123-bfc7-5748a242d3b6/vertica-plain-cmds:2: ERROR 3457: Function fcsvparser() does not exist, or permission is denied for fcsvparser() INFO p.p.e.i.c.s.i.I18nImportServiceImpl - HINT: No function matches the given name and argument types. You may need to add explicit type casts

We confirmed that, in fact, fcsvparser() is not there:

Welcome to vsql, the Vertica Analytic Database interactive terminal.

Type:  \h or \? for help with vsql commands
       \g or terminate with semicolon to execute query
       \q to quit

SSL connection (cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, protocol: TLSv1.2)

default=> \df fcsvparser
                         List of functions
 procedure_name | procedure_return_type | procedure_argument_types
----------------+-----------------------+--------------------------
(0 rows)

default=> select version();
               version
-------------------------------------
 Vertica Analytic Database v12.0.2-0
(1 row)

Best Answer

  • Sergey_Cherepan_1Sergey_Cherepan_1 ✭✭✭
    Answer ✓

    Upgrade or install can fail to install new version of packages for various reasons. That happens more often than I would like to.
    Reinstall packages with admintools

    admintools -t install_package -d -P all

    At least, you will see errors why it is not installing.

Answers

  • SruthiASruthiA Administrator

    Please try it with dbadmin user to see if it still fails with same error. Does it show same error for other functions as well?

  • jordzillajordzilla Vertica Customer

    Hi @SruthiA , this was done using dbadmin as the user.
    Regarding the other functions, running \df * returns 2200 rows.

    Thank you.

  • jordzillajordzilla Vertica Customer

    Is there any Linux prerequisite that I may have missed that would have prevented Vertica from installing that specific function?
    I did install libgfortran, xz-libs, and libgomp.

  • SruthiASruthiA Administrator

    @jordzilla: It works fine for me. Please open a support case to investigate further on this issue.

    eonv120=> CREATE FLEX TABLE rfc();
    CREATE TABLE
    eonv120=> COPY rfc FROM stdin PARSER fcsvparser(header='false');
    Enter data to be copied followed by a newline.
    End with a backslash and a period on a line by itself.

    10,10,20
    .

    eonv120=>
    eonv120=> select * from rfsc;
    ERROR 4566: Relation "rfsc" does not exist
    eonv1203=> select * from rfc;
    identity | raw
    --------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    1 | \001\000\000\000\026\000\000\000\003\000\000\000\020\000\000\000\022\000\000\000\024\000\000\000101020\003\000\000\000\020\000\000\000\025\000\000\000\032\000\000\000ucol0ucol1ucol2
    (1 row)

    eonv120=> \df fcsvparser
    List of functions
    procedure_name | procedure_return_type | procedure_argument_types
    ----------------+-----------------------+--------------------------
    FCsvParser | |
    (1 row)

  • jordzillajordzilla Vertica Customer
    Welcome to vsql, the Vertica Analytic Database interactive terminal.
    
    Type:  \h or \? for help with vsql commands
           \g or terminate with semicolon to execute query
           \q to quit
    
    SSL connection (cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, protocol: TLSv1.2)
    
    default=> CREATE FLEX TABLE rfc();
    CREATE TABLE
    default=> COPY rfc FROM stdin PARSER fcsvparser(header='false');
    ERROR 3457:  Function fcsvparser() does not exist, or permission is denied for fcsvparser()
    HINT:  No function matches the given name and argument types. You may need to add explicit type casts
    

    We'll open a support case on Monday.

    Again, thank you for the help @SruthiA

  • jordzillajordzilla Vertica Customer
    edited March 2023

    Hi @Sergey_Cherepan_1 ,

    Thank you for the suggestion!

    This and running fapolicyd in debug mode allowed me to discover a missing rule that prevented Vertica from loading packages:

    # This override is required for Vertica to operate properly
    allow_log perm=any dir=/opt/vertica/bin/ : ftype=application/x-sharedlib trust=0
    

    We also have telegraph running on the nodes, and that required a couple of additional rules too. But the above one was the key.
    Once I put that rule into place I was able to successfully install all the missing packages.

    The only exceptions were the "AWS" and "hcat" packages.

    From the logs, it appears that "AWS" has been deprecated and a different approach should be used.

    "hcat" I'm not sure of as it was looking for an expected .so file that is not in the file system:

    2023-03-05 21:00:28.250 admintools/2069024:0x7f9a67d4d740 [md5sum_check.is_md5sum_matched] <INFO> Error: The package path
    /opt/vertica/packages/hcat/lib/libhcat.so
    does not exist
    2023-03-05 21:00:28.250 admintools/2069024:0x7f9a67d4d740 [commandLineCtrl.installPackage] <INFO> Failed to install package hcat
    

    Regardless, again, thank you!!

This discussion has been closed.