From derby-dev-return-94095-apmail-db-derby-dev-archive=db.apache.org@db.apache.org Tue Mar 13 12:14:02 2012 Return-Path: X-Original-To: apmail-db-derby-dev-archive@www.apache.org Delivered-To: apmail-db-derby-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id CEBDE9068 for ; Tue, 13 Mar 2012 12:14:02 +0000 (UTC) Received: (qmail 80210 invoked by uid 500); 13 Mar 2012 12:14:02 -0000 Delivered-To: apmail-db-derby-dev-archive@db.apache.org Received: (qmail 80172 invoked by uid 500); 13 Mar 2012 12:14:02 -0000 Mailing-List: contact derby-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: Delivered-To: mailing list derby-dev@db.apache.org Received: (qmail 80160 invoked by uid 99); 13 Mar 2012 12:14:01 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 13 Mar 2012 12:14:01 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,T_RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.116] (HELO hel.zones.apache.org) (140.211.11.116) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 13 Mar 2012 12:13:59 +0000 Received: from hel.zones.apache.org (hel.zones.apache.org [140.211.11.116]) by hel.zones.apache.org (Postfix) with ESMTP id DDD351D33A for ; Tue, 13 Mar 2012 12:13:37 +0000 (UTC) Date: Tue, 13 Mar 2012 12:13:37 +0000 (UTC) From: "Dag H. Wanvik (Commented) (JIRA)" To: derby-dev@db.apache.org Message-ID: <2013512062.7633.1331640817909.JavaMail.tomcat@hel.zones.apache.org> In-Reply-To: <85520529.15364.1311853389536.JavaMail.tomcat@hel.zones.apache.org> Subject: [jira] [Commented] (DERBY-5357) SQLJ.INSTALL_JAR shouldn't use identifier as file name MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/DERBY-5357?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13228349#comment-13228349 ] Dag H. Wanvik commented on DERBY-5357: -------------------------------------- Thanks, Knut! > Could this cause problems if the database crashes during upgrade (after removal of old jar dir and before committing the upgrade transaction) Yes, it could. I thought of leaving the old jar dirs in place, but that may be no desirable either. I see SQLJ.REMOVE_JAR holds off the physical removal till transaction commit time, maybe I can do something similar during upgrade boot. > Could this cause memory problems during upgrade if SYSFILES is huge In theory, sure. There is precedent code using this idiom in DataDictionaryImpl, but you're right, I could easily merge the two methods to avoid the issue altogether. I also found that the upgrade test code which tests the upgraded jars with "CALL EMC.ADDCONTACT" won't run under CDC/JSR169 (nested connection requires DriverManager), so I'll just skipping that part of the test on that platform. I'll spin a new rev. > SQLJ.INSTALL_JAR shouldn't use identifier as file name > ------------------------------------------------------ > > Key: DERBY-5357 > URL: https://issues.apache.org/jira/browse/DERBY-5357 > Project: Derby > Issue Type: Bug > Components: SQL > Affects Versions: 10.9.0.0 > Reporter: Knut Anders Hatlen > Assignee: Dag H. Wanvik > Labels: derby_triage10_9 > Attachments: derby-5357-2.diff, derby-5357-2.stat, derby-5357-with-tests-2.diff, derby-5357-with-tests-2.stat, derby-5357-with-tests.diff, derby-5357-with-tests.stat, derby-5357.diff, derby-5357.stat > > > When installing a jar file with the SQLJ.INSTALL_JAR procedure, it will copy the jar file to a subdirectory of the database directory. The name of the stored jar file is based on the qualified name specified by the second parameter in the procedure, and becomes something like: /jar//.jar. > This naming scheme is problematic because the qualified name of the jar file is an SQL identifier and may contain any characters, also characters with special meaning to the underlying file system. > One example is this call: > ij> call sqlj.install_jar('/path/to/toursdb.jar', 'APP."../../../x/jar"', 0); > 0 rows inserted/updated/deleted > On Unix-like systems, this will install the jar in a subdirectory of the database directory's parent directory, which is clearly unfortunate as the database directory should be self-contained (an assumption used when taking backup of a database using operating system commands, or when moving the database to another location). > There's probably also a possibility that INSTALL_JAR fails if the identifier contains a character that's not allowed in file names on the platform. > It would be better if the jars were stored in a file whose name is independent of the identifier used, so that any valid SQL identifier could be used to name a jar file in the database without causing problems. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira