support add/alter/drop libraries
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/1b74ea6c Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/1b74ea6c Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/1b74ea6c Branch: refs/heads/master Commit: 1b74ea6c23f75903c51628ea68a56dface71b8ac Parents: 980ebc7 Author: Kevin Xu <[email protected]> Authored: Wed Jan 13 10:09:40 2016 +0800 Committer: Kevin Xu <[email protected]> Committed: Wed Jan 13 10:09:40 2016 +0800 ---------------------------------------------------------------------- .../java/org/trafodion/libmgmt/FileMgmt.java | 97 ++++++++++++++++++++ .../lib_mgmt/src/main/resources/init_libmgmt.sh | 50 +++++++++- 2 files changed, 142 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/1b74ea6c/core/sql/lib_mgmt/src/main/java/org/trafodion/libmgmt/FileMgmt.java ---------------------------------------------------------------------- diff --git a/core/sql/lib_mgmt/src/main/java/org/trafodion/libmgmt/FileMgmt.java b/core/sql/lib_mgmt/src/main/java/org/trafodion/libmgmt/FileMgmt.java index 64575d1..918a894 100644 --- a/core/sql/lib_mgmt/src/main/java/org/trafodion/libmgmt/FileMgmt.java +++ b/core/sql/lib_mgmt/src/main/java/org/trafodion/libmgmt/FileMgmt.java @@ -103,6 +103,103 @@ public class FileMgmt { } + /** create a library + * @param libName library name + * @param fileName related file name + * @param hostName host name + * @param localFile local file + * @throws SQLException + */ + public static void addLib(String libName, String fileName, String hostName, + String localFile) throws SQLException { + checkFileName(fileName); + Connection conn = getConn(); + Statement st = null; + try { + st = conn.createStatement(); + String userPath = getCodeFilePath(conn); + String sql = "create library " + libName + " file '" + userPath + + fileName + "'"; + if (hostName != null) { + sql += " HOST NAME '" + hostName + "'"; + } + if (localFile != null) { + sql += " LOCAL FILE '" + localFile + "'"; + } + st.execute(sql); + } finally { + if (st != null) { + try { + st.close(); + } catch (Exception e) { + } + } + } + } + + /** + * change the library related attribute + * + * @param libName + * library name + * @param fileName + * uploaded file's name + * @param hostName + * @param localFile + * @throws SQLException + */ + public static void alterLib(String libName, String fileName, + String hostName, String localFile) throws SQLException { + checkFileName(fileName); + Connection conn = getConn(); + Statement st = null; + String userPath = getCodeFilePath(conn); + String sql = "alter library " + libName + " FILE '" + userPath + + fileName + "'"; + + if (hostName != null) { + sql += " HOST NAME '" + hostName + "'"; + } + if (localFile != null) { + sql += " LOCAL FILE '" + localFile + "'"; + } + try { + st = conn.createStatement(); + st.execute(sql); + } finally { + if (st != null) + st.close(); + } + } + + /** + * drop the library + * + * @param libName + * @param isdefault + * true is RESTRICT false is CASCADE + * @throws SQLException + */ + public static void dropLib(String libName, String mode) throws SQLException { + String sql = null; + Connection con = getConn(); + Statement st = null; + try { + st = con.createStatement(); + sql = "drop library " + libName; + if (mode != null) + if (mode.trim().equalsIgnoreCase("RESTRICT")) + sql += " RESTRICT"; + else if (mode.trim().equalsIgnoreCase("CASCADE")) + sql += " CASCADE"; + + st.execute(sql); + } finally { + if (st != null) + st.close(); + } + } + public static void syncJar(String userPath, String fileName) throws SQLException, IOException { checkFileName(fileName); LOG.info("syncJars " + fileName); http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/1b74ea6c/core/sql/lib_mgmt/src/main/resources/init_libmgmt.sh ---------------------------------------------------------------------- diff --git a/core/sql/lib_mgmt/src/main/resources/init_libmgmt.sh b/core/sql/lib_mgmt/src/main/resources/init_libmgmt.sh index 003c785..6f111e3 100644 --- a/core/sql/lib_mgmt/src/main/resources/init_libmgmt.sh +++ b/core/sql/lib_mgmt/src/main/resources/init_libmgmt.sh @@ -69,10 +69,50 @@ function createProcedures { READS SQL DATA ; GRANT EXECUTE ON PROCEDURE HELP TO ${DB__LIBMGRROLE}; - + + CREATE PROCEDURE 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)' + LIBRARY SPJMGMT + EXTERNAL SECURITY DEFINER + LANGUAGE JAVA + PARAMETER STYLE JAVA + READS SQL DATA + ; + GRANT EXECUTE ON PROCEDURE ADDLIB TO ${DB__LIBMGRROLE}; + + CREATE PROCEDURE 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 SPJMGMT + LANGUAGE JAVA + PARAMETER STYLE JAVA + READS SQL DATA + ; + GRANT EXECUTE ON PROCEDURE DROPLIB TO ${DB__LIBMGRROLE}; + + CREATE PROCEDURE 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 SPJMGMT + LANGUAGE JAVA + PARAMETER STYLE JAVA + READS SQL DATA + ; + GRANT EXECUTE ON PROCEDURE ALTERLIB TO ${DB__LIBMGRROLE}; + CREATE PROCEDURE PUT ( IN FILEDATA VARCHAR(102400) CHARACTER SET ISO88591, - IN FILENAME VARCHAR(256) CHARACTER SET ISO88591, + IN FILENAME VARCHAR(256) CHARACTER SET UTF8, IN CREATEFLAG INTEGER) EXTERNAL NAME 'org.trafodion.libmgmt.FileMgmt.put(java.lang.String,java.lang.String,int)' EXTERNAL SECURITY DEFINER @@ -84,7 +124,7 @@ function createProcedures { GRANT EXECUTE ON PROCEDURE PUT TO ${DB__LIBMGRROLE}; CREATE PROCEDURE LS ( - IN FILENAME VARCHAR(256) CHARACTER SET ISO88591, + 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 @@ -107,7 +147,7 @@ function createProcedures { GRANT EXECUTE ON PROCEDURE LSALL TO ${DB__LIBMGRROLE}; CREATE PROCEDURE RM ( - IN FILENAME VARCHAR(256) CHARACTER SET ISO88591) + IN FILENAME VARCHAR(256) CHARACTER SET UTF8) EXTERNAL NAME 'org.trafodion.libmgmt.FileMgmt.rm(java.lang.String)' EXTERNAL SECURITY DEFINER LIBRARY ${LIB_NAME} @@ -118,7 +158,7 @@ function createProcedures { GRANT EXECUTE ON PROCEDURE RM TO ${DB__LIBMGRROLE}; CREATE PROCEDURE RMREX ( - IN FILENAME VARCHAR(256) CHARACTER SET ISO88591, + 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
