On 10/27/05, Andrew McIntyre <[EMAIL PROTECTED]> wrote:
On 10/27/05, Myrna van Lunteren <[EMAIL PROTECTED]> wrote:
>
> This patch has some updates to outdated j9 canons for the tests
> lang/dcl.sql, floattypes.sql and groupBy.sql.
>
> If a committer can pick this up please?
Committed to trunk with revision 328971. Did you need these in 10.1 also?
andrew
Actually, in 10.1 I need a new j9_13/dcl.out, and a different update to j9_13/floattypes.out. (the test results didn't come through, so I hadn't paid attention - thx for reminding me).
If for 10.1 you could apply the attached _10.1.diff file?
Thx...
Myrna
Index:
java/testing/org/apache/derbyTesting/functionTests/master/j9_13/floattypes.out
===================================================================
---
java/testing/org/apache/derbyTesting/functionTests/master/j9_13/floattypes.out
(revision 329042)
+++
java/testing/org/apache/derbyTesting/functionTests/master/j9_13/floattypes.out
(working copy)
@@ -2483,6 +2483,14 @@
1
---------
ERROR 22018: Invalid character string format for type DECIMAL.
+ij> values cast ('-1e+-1' as DECIMAL(6,2));
+1
+---------
+ERROR 22018: Invalid character string format for type DECIMAL.
+ij> values cast ('-1e+-1' as DECIMAL(6,2));
+1
+---------
+ERROR 22018: Invalid character string format for type DECIMAL.
ij> values cast ('1.0e' as DECIMAL(6,2));
1
---------
Index: java/testing/org/apache/derbyTesting/functionTests/master/j9_13/dcl.out
===================================================================
--- java/testing/org/apache/derbyTesting/functionTests/master/j9_13/dcl.out
(revision 0)
+++ java/testing/org/apache/derbyTesting/functionTests/master/j9_13/dcl.out
(revision 0)
@@ -0,0 +1,253 @@
+ij> -- test database class loading.
+maximumdisplaywidth 300;
+ij> create schema emc;
+0 rows inserted/updated/deleted
+ij> set schema emc;
+0 rows inserted/updated/deleted
+ij> create table contacts (id int primary key, e_mail varchar(30));
+0 rows inserted/updated/deleted
+ij> create procedure EMC.ADDCONTACT(id INT, e_mail VARCHAR(30))
+MODIFIES SQL DATA
+external name 'org.apache.derbyTesting.databaseclassloader.emc.addContact'
+language java parameter style java;
+0 rows inserted/updated/deleted
+ij> create function EMC.GETARTICLE(path VARCHAR(40)) RETURNS VARCHAR(256)
+NO SQL
+external name 'org.apache.derbyTesting.databaseclassloader.emc.getArticle'
+language java parameter style java;
+0 rows inserted/updated/deleted
+ij> -- fails because no class in classpath,
+CALL EMC.ADDCONTACT(1, '[EMAIL PROTECTED]');
+ERROR 42X51: The class 'org.apache.derbyTesting.databaseclassloader.emc' does
not exist or is inaccessible. This can happen if the class is not public.
+ERROR XJ001: Java exception: 'org.apache.derbyTesting.databaseclassloader.emc:
java.lang.ClassNotFoundException'.
+ij> -- install the jar, copied there by the magic of supportfiles
+-- in the test harness (dcl_app.properties). The source for
+-- the class is contained within the jar for reference.
+CALL SQLJ.INSTALL_JAR('file:extin/dcl_emc1.jar', 'EMC.MAIL_APP', 0);
+0 rows inserted/updated/deleted
+ij> -- fails because no class not in classpath, jar file not in database
classpath.
+CALL EMC.ADDCONTACT(1, '[EMAIL PROTECTED]');
+ERROR 42X51: The class 'org.apache.derbyTesting.databaseclassloader.emc' does
not exist or is inaccessible. This can happen if the class is not public.
+ERROR XJ001: Java exception: 'org.apache.derbyTesting.databaseclassloader.emc:
java.lang.ClassNotFoundException'.
+ij> -- now add this into the database class path
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.classpath',
'EMC.MAIL_APP');
+0 rows inserted/updated/deleted
+ij> -- all should work now
+CALL EMC.ADDCONTACT(1, '[EMAIL PROTECTED]');
+0 rows inserted/updated/deleted
+ij> CALL EMC.ADDCONTACT(2, '[EMAIL PROTECTED]');
+0 rows inserted/updated/deleted
+ij> SELECT id, e_mail from EMC.CONTACTS;
+ID |E_MAIL
+------------------------------------------
+1 |[EMAIL PROTECTED]
+2 |[EMAIL PROTECTED]
+ij> -- Test resource loading from the jar file
+-- Simple path should be prepended with the package name
+-- of the class executing the code to find
+-- /org/apache/derbyTesting/databaseclassloader/graduation.txt
+VALUES EMC.GETARTICLE('graduate.txt');
+1
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+The Apache Foundation has released the first version of the open-source Derby
database, which also gained support from Sun Microsystems.
+ij> -- now an absolute path
+VALUES EMC.GETARTICLE('/article/release.txt');
+1
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+The Apache Derby development community is pleased to announce its first
release after graduating from the Apache Incubator, Apache Derby 10.1.1.0.
+ij> -- no such resources
+VALUES EMC.GETARTICLE('/article/fred.txt');
+1
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL
+ij> VALUES EMC.GETARTICLE('barney.txt');
+1
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL
+ij> -- try to read the class file should be disallowed
+-- by returning null
+VALUES EMC.GETARTICLE('emc.class');
+1
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL
+ij> VALUES
EMC.GETARTICLE('/org/apache/derbyTesting/databaseclassloader/emc.class');
+1
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL
+ij> -- now the application needs to track if e-mails are valid
+ALTER TABLE EMC.CONTACTS ADD COLUMN OK SMALLINT;
+0 rows inserted/updated/deleted
+ij> SELECT id, e_mail, ok from EMC.CONTACTS;
+ID |E_MAIL |OK
+-------------------------------------------------
+1 |[EMAIL PROTECTED] |NULL
+2 |[EMAIL PROTECTED] |NULL
+ij> -- well written application, INSERT used explicit column names
+-- ok defaults to NULL
+CALL EMC.ADDCONTACT(3, '[EMAIL PROTECTED]');
+0 rows inserted/updated/deleted
+ij> SELECT id, e_mail, ok from EMC.CONTACTS;
+ID |E_MAIL |OK
+-------------------------------------------------
+1 |[EMAIL PROTECTED] |NULL
+2 |[EMAIL PROTECTED] |NULL
+3 |[EMAIL PROTECTED] |NULL
+ij> -- check the roll back of class loading.
+-- install a new jar in a transaction, see
+-- that the new class is used and then rollback
+-- the old class should be used after the rollback.
+AUTOCOMMIT OFF;
+ij> CALL SQLJ.REPLACE_JAR('file:extin/dcl_emc2.jar', 'EMC.MAIL_APP');
+0 rows inserted/updated/deleted
+ij> CALL EMC.ADDCONTACT(99, '[EMAIL PROTECTED]');
+0 rows inserted/updated/deleted
+ij> SELECT id, e_mail, ok from EMC.CONTACTS;
+ID |E_MAIL |OK
+-------------------------------------------------
+1 |[EMAIL PROTECTED] |NULL
+2 |[EMAIL PROTECTED] |NULL
+3 |[EMAIL PROTECTED] |NULL
+99 |[EMAIL PROTECTED] |0
+ij> rollback;
+ij> AUTOCOMMIT ON;
+ij> SELECT id, e_mail, ok from EMC.CONTACTS;
+ID |E_MAIL |OK
+-------------------------------------------------
+1 |[EMAIL PROTECTED] |NULL
+2 |[EMAIL PROTECTED] |NULL
+3 |[EMAIL PROTECTED] |NULL
+ij> CALL EMC.ADDCONTACT(99, '[EMAIL PROTECTED]');
+0 rows inserted/updated/deleted
+ij> SELECT id, e_mail, ok from EMC.CONTACTS;
+ID |E_MAIL |OK
+-------------------------------------------------
+1 |[EMAIL PROTECTED] |NULL
+2 |[EMAIL PROTECTED] |NULL
+3 |[EMAIL PROTECTED] |NULL
+99 |[EMAIL PROTECTED] |NULL
+ij> DELETE FROM EMC.CONTACTS WHERE ID = 99;
+1 row inserted/updated/deleted
+ij> -- now change the application to run checks on the e-mail
+-- address to ensure it is valid (in this case by seeing if
+-- simply includes 'spam' in the title.
+CALL SQLJ.REPLACE_JAR('file:extin/dcl_emc2.jar', 'EMC.MAIL_APP');
+0 rows inserted/updated/deleted
+ij> CALL EMC.ADDCONTACT(4, '[EMAIL PROTECTED]');
+0 rows inserted/updated/deleted
+ij> CALL EMC.ADDCONTACT(5, '[EMAIL PROTECTED]');
+0 rows inserted/updated/deleted
+ij> SELECT id, e_mail, ok from EMC.CONTACTS;
+ID |E_MAIL |OK
+-------------------------------------------------
+1 |[EMAIL PROTECTED] |NULL
+2 |[EMAIL PROTECTED] |NULL
+3 |[EMAIL PROTECTED] |NULL
+4 |[EMAIL PROTECTED] |0
+5 |[EMAIL PROTECTED] |1
+ij> -- now add another jar in to test two jars and
+-- a quoted identifer for the jar names.
+create schema "emcAddOn";
+0 rows inserted/updated/deleted
+ij> set schema emcAddOn;
+ERROR 42Y07: Schema 'EMCADDON' does not exist
+ij> set schema "emcAddOn";
+0 rows inserted/updated/deleted
+ij> create function "emcAddOn".VALIDCONTACT(e_mail VARCHAR(30))
+RETURNS SMALLINT
+READS SQL DATA
+external name
'org.apache.derbyTesting.databaseclassloader.addon.vendor.util.valid'
+language java parameter style java;
+0 rows inserted/updated/deleted
+ij> CALL SQLJ.INSTALL_JAR('file:extin/dcl_emcaddon.jar',
'"emcAddOn"."MailAddOn"', 0);
+0 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.classpath',
'EMC.MAIL_APP:"emcAddOn"."MailAddOn"');
+0 rows inserted/updated/deleted
+ij> select e_mail, "emcAddOn".VALIDCONTACT(e_mail) from EMC.CONTACTS;
+E_MAIL |2
+-------------------------------------
[EMAIL PROTECTED] |0
[EMAIL PROTECTED] |0
[EMAIL PROTECTED] |0
[EMAIL PROTECTED] |0
[EMAIL PROTECTED] |1
+ij> -- function that gets the signers of the class (loaded from the jar)
+create function EMC.GETSIGNERS(CLASS_NAME VARCHAR(256))
+RETURNS VARCHAR(60)
+NO SQL
+external name 'org.apache.derbyTesting.databaseclassloader.emc.getSigners'
+language java parameter style java;
+0 rows inserted/updated/deleted
+ij> -- at this point the jar is not signed, NULL expected
+VALUES EMC.GETSIGNERS('org.apache.derbyTesting.databaseclassloader.emc');
+1
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL
+ij> -- Replace with a signed jar
+-- (self signed certificate)
+--
+-- Commands used to sign jar
+-- keytool -genkey -dname "cn=EMC CTO, ou=EMC APP, o=Easy Mail Company, c=US"
-alias emccto -keypass kpi135 -keystore emcks -storepass ab987c
+-- keytool -selfcert -alias emccto -keypass kpi135 -keystore emcks -storepass
ab987c
+-- jarsigner -keystore emcks -storepass ab987c -keypass kpi135 -signedjar
dcl_emc2s.jar dcl_emc2.jar emccto
+--
+--
+CALL SQLJ.REPLACE_JAR('file:extin/dcl_emc2s.jar', 'EMC.MAIL_APP');
+0 rows inserted/updated/deleted
+ij> VALUES EMC.GETSIGNERS('org.apache.derbyTesting.databaseclassloader.emc');
+1
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+CN=EMC CTO,O=Easy Mail Company,OU=EMC APP,C=US
+ij> -- other jar should not be signed
+VALUES
EMC.GETSIGNERS('org.apache.derbyTesting.databaseclassloader.addon.vendor.util');
+1
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL
+ij> -- replace with a hacked jar file, emc.class modified to diable
+-- valid e-mail address check but using same signatures.
+-- ie direct replacement of the .class file.
+CALL SQLJ.REPLACE_JAR('file:extin/dcl_emc2sm.jar', 'EMC.MAIL_APP');
+0 rows inserted/updated/deleted
+ij> CALL EMC.ADDCONTACT(99, '[EMAIL PROTECTED]');
+0 rows inserted/updated/deleted
+ij> -- replace with a hacked jar file, emc.class modified to
+-- be an invalid jar file (no signing on this jar).
+CALL SQLJ.REPLACE_JAR('file:extin/dcl_emc2l.jar', 'EMC.MAIL_APP');
+0 rows inserted/updated/deleted
+ij> CALL EMC.ADDCONTACT(999, '[EMAIL PROTECTED]');
+ERROR 42X51: The class 'org.apache.derbyTesting.databaseclassloader.emc' does
not exist or is inaccessible. This can happen if the class is not public.
+ERROR XJ001: Java exception: 'org.apache.derbyTesting.databaseclassloader.emc
: (org/apache/derbyTesting/databaseclassloader/emc) unknown constant pool entry
tag at offset=10: java.lang.ClassNotFoundException'.
+ij> -- cleanup
+CALL SQLJ.REMOVE_JAR('EMC.MAIL_APP', 0);
+ERROR X0X07: Cannot drop jar file '"EMC"."MAIL_APP"' because its on your
db2j.database.classpath '"EMC"."MAIL_APP"'.
+ij> call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.classpath',
'"emcAddOn"."MailAddOn"');
+0 rows inserted/updated/deleted
+ij> CALL EMC.ADDCONTACT(99, '[EMAIL PROTECTED]');
+ERROR 42X51: The class 'org.apache.derbyTesting.databaseclassloader.emc' does
not exist or is inaccessible. This can happen if the class is not public.
+ERROR XJ001: Java exception: 'org.apache.derbyTesting.databaseclassloader.emc:
java.lang.ClassNotFoundException'.
+ij> CALL SQLJ.REMOVE_JAR('EMC.MAIL_APP', 0);
+0 rows inserted/updated/deleted
+ij> DROP PROCEDURE EMC.ADDCONTACT;
+0 rows inserted/updated/deleted
+ij> DROP FUNCTION EMC.GETSIGNERS;
+0 rows inserted/updated/deleted
+ij> select e_mail, "emcAddOn".VALIDCONTACT(e_mail) from EMC.CONTACTS;
+E_MAIL |2
+-------------------------------------
[EMAIL PROTECTED] |0
[EMAIL PROTECTED] |0
[EMAIL PROTECTED] |0
[EMAIL PROTECTED] |0
[EMAIL PROTECTED] |1
[EMAIL PROTECTED] |1
+ij> call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.classpath',
'');
+0 rows inserted/updated/deleted
+ij> select e_mail, "emcAddOn".VALIDCONTACT(e_mail) from EMC.CONTACTS;
+ERROR 42X51: The class
'org.apache.derbyTesting.databaseclassloader.addon.vendor.util' does not exist
or is inaccessible. This can happen if the class is not public.
+ERROR XJ001: Java exception:
'org.apache.derbyTesting.databaseclassloader.addon.vendor.util:
java.lang.ClassNotFoundException'.
+ij> CALL SQLJ.REMOVE_JAR('"emcAddOn"."MailAddOn"', 0);
+0 rows inserted/updated/deleted
+ij> DROP FUNCTION "emcAddOn".VALIDCONTACT;
+0 rows inserted/updated/deleted
+ij> DROP TABLE EMC.CONTACTS;
+0 rows inserted/updated/deleted
+ij> Property changes on: java/testing/org/apache/derbyTesting/functionTests/master/j9_13/dcl.out ___________________________________________________________________ Name: svn:eol-style + native
