add one more param for put for file existing check
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/02a8bd50 Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/02a8bd50 Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/02a8bd50 Branch: refs/heads/master Commit: 02a8bd50143d489c4a3a13108627ada0080c3be1 Parents: 0a37686 Author: Kevin Xu <[email protected]> Authored: Thu Jan 21 15:28:07 2016 +0800 Committer: Kevin Xu <[email protected]> Committed: Thu Jan 21 15:28:07 2016 +0800 ---------------------------------------------------------------------- .../src/main/java/org/trafodion/libmgmt/FileMgmt.java | 10 +++++++++- core/sql/lib_mgmt/src/main/resources/init_libmgmt.sh | 5 +++-- 2 files changed, 12 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/02a8bd50/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 e7e0258..5e1e2b2 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 @@ -473,6 +473,7 @@ public class FileMgmt { names[0] = toXML(files, "ls"); } + /** * upload a JAR file * @@ -480,9 +481,12 @@ public class FileMgmt { * @param fileName * @param appendFlag * 0: append; otherwise overwrite + * @param overwriteOnCreate + * when appendFlag is not 0, check if file exists and overwriteOnCreate is not 0, + * throw exception. Otherwise overwrite the file. * @throws SQLException */ - public static void put(String fileData, String fileName, int appendFlag) throws SQLException { + public static void put(String fileData, String fileName, int appendFlag, int overwriteOnCreate) throws SQLException, IOException { checkFileName(fileName); try { byte[] data = fileData.getBytes(CHARTSET); @@ -492,6 +496,10 @@ public class FileMgmt { String userPath = getCodeFilePath(conn); close(conn); String fname = userPath + fileName; + if (overwriteOnCreate != 0 && appendFlag != 0 + && new File(fname).exists()) { + throw new IOException("File " + fileName + " already exists!"); + } checkFile(fname, data.length); FileOutputStream fos = null; FileChannel channel = null; http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/02a8bd50/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 6811f28..e78c1e4 100644 --- a/core/sql/lib_mgmt/src/main/resources/init_libmgmt.sh +++ b/core/sql/lib_mgmt/src/main/resources/init_libmgmt.sh @@ -116,8 +116,9 @@ function createProcedures { CREATE PROCEDURE PUT ( IN FILEDATA VARCHAR(102400) 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)' + 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 ${LIB_NAME} LANGUAGE JAVA
