blob: 18b6d7a329c65ae9d001c1841d8815ae40707cfd [file] [log] [blame]
// @@@ START COPYRIGHT @@@
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
// @@@ END COPYRIGHT @@@
#ifndef _CMP_SEABASE_PROCEDURES_H_
#define _CMP_SEABASE_PROCEDURES_H_
#include "CmpSeabaseDDL.h"
// To add a new procedure:
// update export/lib/lib_mgmt.jar to include code for the new procedure
// add a define representing the procedures below
// add a static const QString representing the create procedure text
// add a new entry in allLibmgrRoutineInfo
// perform initialize trafodion, upgrade library management
// recommend that new procedures are added in alphabetic order
// At this time there is no support to drop or change the signature of an
// existing procedure. Since customers may be using the procedures, it is
// recommended that they not be dropped or changed - instead add new ones
// to handle the required change.
// List of supported system procedures - in alphabetic order
#define SYSTEM_PROC_ADDLIB "ADDLIB"
#define SYSTEM_PROC_ALTERLIB "ALTERLIB"
#define SYSTEM_PROC_DROPLIB "DROPLIB"
#define SYSTEM_PROC_GETFILE "GETFILE"
#define SYSTEM_PROC_HELP "HELP"
#define SYSTEM_PROC_LS "LS"
#define SYSTEM_PROC_LSALL "LSALL"
#define SYSTEM_PROC_PUT "PUT"
#define SYSTEM_PROC_RM "RM"
#define SYSTEM_PROC_RMREX "RMREX"
// Create procedure text for system procedures
static const QString seabaseProcAddlibDDL[] =
{
{" CREATE PROCEDURE IF NOT EXISTS %s.\"%s\"."SYSTEM_PROC_ADDLIB" "},
{" ( "},
{" IN LIBNAME VARCHAR(1024) CHARACTER SET UTF8, "},
{" IN FILENAME VARCHAR(1024) CHARACTER SET UTF8, "},
{" IN HOSTNAME VARCHAR(1024) CHARACTER SET UTF8, "},
{" IN LOCALFILE VARCHAR(1024) CHARACTER SET UTF8) "},
{" EXTERNAL NAME 'org.trafodion.libmgmt.FileMgmt.addLib (java.lang.String,java.lang.String,java.lang.String,java.lang.String)' "},
{" EXTERNAL SECURITY DEFINER "},
{" LIBRARY %s.\"%s\".%s "},
{" LANGUAGE JAVA "},
{" PARAMETER STYLE JAVA "},
{" CONTAINS SQL "},
{" NO TRANSACTION REQUIRED "},
{" ; "}
};
static const QString seabaseProcAlterlibDDL[] =
{
{" CREATE PROCEDURE IF NOT EXISTS %s.\"%s\".ALTERLIB "},
{" ( "},
{" IN LIBNAME VARCHAR(1024) CHARACTER SET UTF8,"},
{" IN FILENAME VARCHAR(1024) CHARACTER SET UTF8,"},
{" IN HOSTNAME VARCHAR(1024) CHARACTER SET UTF8,"},
{" IN LOCALFILE VARCHAR(1024) CHARACTER SET UTF8) "},
{" EXTERNAL NAME 'org.trafodion.libmgmt.FileMgmt.alterLib (java.lang.String,java.lang.String,java.lang.String,java.lang.String)' "},
{" EXTERNAL SECURITY DEFINER "},
{" LIBRARY %s.\"%s\".%s "},
{" LANGUAGE JAVA "},
{" PARAMETER STYLE JAVA "},
{" CONTAINS SQL "},
{" NO TRANSACTION REQUIRED "},
{" ; "}
};
static const QString seabaseProcDroplibDDL[] =
{
{" CREATE PROCEDURE IF NOT EXISTS %s.\"%s\".DROPLIB "},
{" ( "},
{" IN LIBNAME VARCHAR(1024) CHARACTER SET UTF8, "},
{" IN MODETYPE VARCHAR(1024) CHARACTER SET ISO88591) "},
{" EXTERNAL NAME 'org.trafodion.libmgmt.FileMgmt.dropLib (java.lang.String,java.lang.String)' "},
{" EXTERNAL SECURITY DEFINER "},
{" LIBRARY %s.\"%s\".%s "},
{" LANGUAGE JAVA "},
{" PARAMETER STYLE JAVA "},
{" CONTAINS SQL "},
{" NO TRANSACTION REQUIRED "},
{" ; "}
};
static const QString seabaseProcGetfileDDL[] =
{
{" CREATE PROCEDURE IF NOT EXISTS %s.\"%s\".GETFILE "},
{" ( "},
{" IN FILENAME VARCHAR(256) CHARACTER SET UTF8,"},
{" IN OFFSET INTEGER,"},
{" OUT FILEDATA VARCHAR(12800) CHARACTER SET UTF8,"},
{" OUT DATALENGTH LARGEINT)"},
{" EXTERNAL NAME 'org.trafodion.libmgmt.FileMgmt.get (java.lang.String,int,java.lang.String[],long[])' "},
{" LIBRARY %s.\"%s\".%s "},
{" EXTERNAL SECURITY DEFINER "},
{" LANGUAGE JAVA "},
{" PARAMETER STYLE JAVA "},
{" READS SQL DATA "},
{" NO TRANSACTION REQUIRED "},
{" ; "}
};
static const QString seabaseProcHelpDDL[] =
{
{" CREATE PROCEDURE IF NOT EXISTS %s.\"%s\".HELP "},
{" ( "},
{" INOUT COMMANDNAME VARCHAR(2560) CHARACTER SET ISO88591) "},
{" EXTERNAL NAME 'org.trafodion.libmgmt.FileMgmt.help (java.lang.String[])' "},
{" EXTERNAL SECURITY DEFINER "},
{" LIBRARY %s.\"%s\".%s "},
{" LANGUAGE JAVA "},
{" PARAMETER STYLE JAVA "},
{" READS SQL DATA "},
{" ; "}
};
static const QString seabaseProcLsDDL[] =
{
{" CREATE PROCEDURE IF NOT EXISTS %s.\"%s\".LS "},
{" ( "},
{" IN FILENAME VARCHAR(256) CHARACTER SET UTF8, "},
{" OUT FILENAMES VARCHAR(10240) CHARACTER SET ISO88591) "},
{" EXTERNAL NAME 'org.trafodion.libmgmt.FileMgmt.ls(java.lang.String,java.lang.String[])' "},
{" EXTERNAL SECURITY DEFINER "},
{" LIBRARY %s.\"%s\".%s "},
{" LANGUAGE JAVA "},
{" PARAMETER STYLE JAVA "},
{" READS SQL DATA "},
{" NO TRANSACTION REQUIRED "},
{" ; "}
};
static const QString seabaseProcLsallDDL[] =
{
{" CREATE PROCEDURE IF NOT EXISTS %s.\"%s\".LSALL "},
{" ( "},
{" OUT FILENAMES VARCHAR(10240) CHARACTER SET ISO88591) "},
{" EXTERNAL NAME 'org.trafodion.libmgmt.FileMgmt.lsAll(java.lang.String[])' "},
{" EXTERNAL SECURITY DEFINER "},
{" LIBRARY %s.\"%s\".%s "},
{" LANGUAGE JAVA "},
{" PARAMETER STYLE JAVA "},
{" READS SQL DATA "},
{" NO TRANSACTION REQUIRED "},
{" ; "}
};
static const QString seabaseProcPutDDL[] =
{
{" CREATE PROCEDURE IF NOT EXISTS %s.\"%s\".PUT "},
{" ( "},
{" IN FILEDATA VARCHAR(102400) CHARACTER SET ISO88591, "},
{" IN FILENAME VARCHAR(256) CHARACTER SET UTF8, "},
{" IN CREATEFLAG INTEGER, "},
{" IN FILEOVERWRITE INTEGER) "},
{" EXTERNAL NAME 'org.trafodion.libmgmt.FileMgmt.put(java.lang.String,java.lang.String,int,int)' "},
{" EXTERNAL SECURITY DEFINER "},
{" LIBRARY %s.\"%s\".%s "},
{" LANGUAGE JAVA "},
{" PARAMETER STYLE JAVA "},
{" READS SQL DATA "},
{" NO TRANSACTION REQUIRED "},
{" ; "}
};
static const QString seabaseProcRmDDL[] =
{
{" CREATE PROCEDURE IF NOT EXISTS %s.\"%s\".RM "},
{" ( "},
{" IN FILENAME VARCHAR(256) CHARACTER SET UTF8) "},
{" EXTERNAL NAME 'org.trafodion.libmgmt.FileMgmt.rm(java.lang.String)' "},
{" EXTERNAL SECURITY DEFINER "},
{" LIBRARY %s.\"%s\".%s "},
{" LANGUAGE JAVA "},
{" PARAMETER STYLE JAVA "},
{" READS SQL DATA "},
{" NO TRANSACTION REQUIRED "},
{" ; "}
};
static const QString seabaseProcRmrexDDL[] =
{
{" CREATE PROCEDURE IF NOT EXISTS %s.\"%s\".RMREX "},
{" ( "},
{" IN FILENAME VARCHAR(256) CHARACTER SET UTF8, "},
{" OUT FILENAMES VARCHAR(10240) CHARACTER SET ISO88591) "},
{" EXTERNAL NAME 'org.trafodion.libmgmt.FileMgmt.rmRex(java.lang.String, java.lang.String[])' "},
{" EXTERNAL SECURITY DEFINER "},
{" LIBRARY %s.\"%s\".%s "},
{" LANGUAGE JAVA "},
{" PARAMETER STYLE JAVA "},
{" READS SQL DATA "},
{" NO TRANSACTION REQUIRED "},
{" ; "}
};
struct LibmgrRoutineInfo
{
// name of the procedure
const char * newName;
// ddl stmt corresponding to the current ddl.
const QString *newDDL;
Lng32 sizeOfnewDDL;
};
static const LibmgrRoutineInfo allLibmgrRoutineInfo[] = {
{SYSTEM_PROC_ADDLIB,
seabaseProcAddlibDDL,
sizeof(seabaseProcAddlibDDL)
},
{SYSTEM_PROC_ALTERLIB,
seabaseProcAlterlibDDL,
sizeof(seabaseProcAlterlibDDL)
},
{SYSTEM_PROC_DROPLIB,
seabaseProcDroplibDDL,
sizeof(seabaseProcDroplibDDL)
},
{SYSTEM_PROC_GETFILE,
seabaseProcGetfileDDL,
sizeof(seabaseProcGetfileDDL)
},
{SYSTEM_PROC_HELP,
seabaseProcHelpDDL,
sizeof(seabaseProcHelpDDL)
},
{SYSTEM_PROC_LS,
seabaseProcLsDDL,
sizeof(seabaseProcLsDDL)
},
{SYSTEM_PROC_LSALL,
seabaseProcLsallDDL,
sizeof(seabaseProcLsallDDL)
},
{SYSTEM_PROC_PUT,
seabaseProcPutDDL,
sizeof(seabaseProcPutDDL)
},
{SYSTEM_PROC_RM,
seabaseProcRmDDL,
sizeof(seabaseProcRmDDL)
},
{SYSTEM_PROC_RMREX,
seabaseProcRmrexDDL,
sizeof(seabaseProcRmrexDDL)
}
};
#endif