voltdb

In VoltDB, How to store NULL in column when i pass empty string as parameter?


Currently, When I pass an empty string in VoltDB Stored Procedure parameter, It stores as an empty string. Is there any way to store NULL when I pass an empty string as a parameter(Just Like Oracle)?


Solution

  • In VoltDB, empty strings are not the same thing as NULL. Oracle is the only database I know that considers these equal. You can simply pass NULL into a VoltDB stored procedure if you wish to store NULL.

    If you want an empty string to be stored as NULL, I think the best way to do this would be a conditional statement in some java stored procedure code. If the input is "", then store null. Like so:

    public class Example extends VoltProcedure {
    
        public final SQLStmt sql = new SQLStmt(
            "INSERT INTO t (col1, col2) VALUES (?,?);");
    
        public VoltTable[] run(long id, String val) throws VoltAbortException {
    
            if (val.equals("")) {
                val = null;
            }
    
            voltQueueSQL( sql, id, val );
            return voltExecuteSQL();
    
        }
    }