Sometimes a java.lang.IllegalAccessError message appears when SQLDeveloper restarts after installing
the OrindaBuild plugin.
Even though this message appears the plugin will work.
Oracle are fixing this.
OracleConnection.setSessionTime() as part of executeProc. In addition to extra
code this will involve keeping track of and possibly validating the time zone
against Oracle's list of acceptable ones.
String.trim() on the returned data. What should happen is that OrindaBuild should determine the size of the longest field and
pass it to setMaxFieldSize(). This would reduce the volume of data being retrieved.
The character Strings exist in USER_SYNONYMS - it's hard to fix this as OrindaBuild has no way of knowing what the 'correct' name should be.
This problem can be avoided by using "Private Synonym" or "Other User's Object" in step 2.2.1 instead of "Public Synonym".
The pseudo-random string of characters appears to be the same for any given procedure even if you re-create it in a different database instance that uses a different Oracle version.
Orinda Software has fixed most of this problem in 4.0.1846. We are waiting to see if the problem still exists in the definitive 1.5 JVM before completely fixing this bug.
SELECT /* What is this comment for ? */ USERNAME
FROM USER_USERS
WHERE USERNAME = ?;
it will fail because SqlUtils.countParameters() will return '2' when it should return '1'.
/* Comment At Start */ SELECT USERNAME
FROM USER_USERS
WHERE USERNAME = ?;
The same thing happens if leading spaces are present.
This message occurs when the driver encounters a database object it doesn't know how to deal with. The most common cause is using an 8i driver to access a database containing a 9i datatype such as TIMESTAMP. You can also get it when the driver is far ahead of the database version. An example of this would be attempting to access a DATE column in an Oracle 8.1.5 database using the 9.2.0 driver.
Problem: If you are working with BC4J and use oracle.jbo.server.DBTransaction to connect to the database you will not be able to instantiate Orinda generated classes, as they expect a JDBC Connection object. There is no obvious way to get a Connection object from an oracle.jbo.server.DBTransaction.
Workaround: You can create a dummy statement and then retrieve its Connection object:
Connection conn = getDBTransaction()
.createCallableStatement("select 1 from dual",1)
.getConnection();
The connection can then be passed to your generated class. We found this workaround on Oracle's OTN website.
Resolution: Orinda plans on adding an option to create additional class construnctors that take a oracle.jbo.server.DBTransaction Object instead of a Connection Object. This is a non-trivial enhancement and is going to have to wait until the next significant build.
Problem:If you attempt to run OrindaBuild against "Oracle 10g Personal" a NullPointerException is generated shortly after login.
Analysis: In Oracle 10g Personal the entries in v$version all begin with "Personal Oracle".
In prior versions of the Personal edition the v$version entries began with "OracleXi Personal".
OrindaBuild is confused by this and fails to populate a String variable containing the database version leading to a
NullPointerException.
This problem only affects the Personal edition.
Resolution: A new build which works with "Oracle 10g Personal" is in regression testing.
Problem:NullPointerException/Empty Modal Message when trying to create an OrindaBuild file in Eclipse.
Analysis:The code attempts to find the container entered by the user. If no container exists a resource Object is set
to null and a NullPointerException is thown when the code tries to reference the Object. Since the code in question was generated
by Eclipse's Plugin wizard we have also filed this as a bug in Eclipse.
Resolution: A new build which fixes this bug has been released.
# # HotSpot Virtual Machine Error, Internal Error # Please report this error at # http://java.sun.com/cgi-bin/bugreport.cgi # # Java VM: Java HotSpot(TM) Client VM (1.4.2_03-b02 mixed mode) # # Error ID: 43113F32554E54494D45110E4350500308 # # Problematic Thread: prio=7 tid=0x02ecf248 nid=0xc10 runnable #
The error id 43113F32554E54494D45110E4350500308 is associated with Sun bug #4820592 .
Resolution: Prior to 4.0.1846 OrindaBuild was compiled using the 1.2 JVM. We now use the 1.4 JVM and have verified that the code runs on 1.2, 1.3, 1.4 and 1.5 without this bug reappearing.
Bug Reopened: This bug has continued to occur sporadically since 4.0.1846. It appears to be associated with Intel based machines and large numbers of Tables.
Resolution: From build 4.0.1959 onwards we use a set of JVM parameters which prevent this bug from occuring.
Resolution: For build 4.0.1970 we rewrote the code in question, as our previous fix didn't work for the JDeveloper 10g and Eclipse 3.0 extensions. Any customers who have seen this bug should uprade to 4.0.1970 or higher.
See Also: The Orinda Software Blog
DESGetKey function JDBC can't tell the difference between the version
which takes a RAW and the version which takes a
VARCHAR2. This is a JDBC PL/SQL thing and not something OrindaBuild can fix.
Workaround:
We therefore proposed a workaround. We created a package called wrapped_des which only implements the 3 functions
we had decided to use. PL/SQL is much better at resolving overload problems than JDBC so by calling a PL/SQL
function which called the 'correct' encryption function we could resolve the issue. Even so, to get out PL/SQL
to work we had to use named parameters ("param_name => param_value"). Normally Orinda prides itself on the fact
that you don't have to create views, tables etc to use our stuff but this is a rare exception.
The workaround procedure code is:
CREATE OR REPLACE PACKAGE wrapped_des AS
--
FUNCTION DESGetKey(seed_string IN VARCHAR2) RETURN VARCHAR2;
--
FUNCTION DESEncrypt(input_string IN VARCHAR2,
key_string IN VARCHAR2)
RETURN VARCHAR2;
--
FUNCTION DESDecrypt(input_string IN VARCHAR2,
key_string IN VARCHAR2)
RETURN VARCHAR2;
--
END;
/
CREATE OR REPLACE PACKAGE BODY wrapped_des AS
--
FUNCTION DESGetKey(seed_string IN VARCHAR2) RETURN VARCHAR2
IS
--
BEGIN
--
-- We explicitly name the parameters to avoid
-- the "too many declarations" message
--
RETURN(dbms_obfuscation_toolkit.DESGetKey
(seed_string => seed_string));
--
END;
--
FUNCTION DESEncrypt(input_string IN VARCHAR2,
key_string IN VARCHAR2)
RETURN VARCHAR2 IS
--
BEGIN
--
RETURN(dbms_obfuscation_toolkit.DESEncrypt
(input_string => input_string
,key_string => key_string));
--
END;
--
--
--
FUNCTION DESDecrypt(input_string IN VARCHAR2,
key_string IN VARCHAR2)
RETURN VARCHAR2 IS
--
BEGIN
--
RETURN(dbms_obfuscation_toolkit.DESDecrypt
(input_string => input_string
,key_string => key_string));
--
END;
--
--
END;
/
FOO_PROC
FOO_PROC.FOO_PROC
This is caused by a change in the way the data dictionary worked in 9.0.1.
setTempDir(java.io.File tempFileDir) and creating
temporary files in inconvenient locations
setTempFileSuffix(String tempFileSuffix)
method but it doesn't work.
1. Log into an Oracle 9i database
2. Find a procedure with one or more parameters that uses a datatype that doesn't exist in 8i
3. Specify 8.1.5, 8.1.6, 8.1.7 as a target database
You should get a warning at the generation stage (Step 5) but don't.
This bug arose because while in theory '$' is a legal character for a Java identifer in practice it is reserved for Inner classes. OrindaBuild 4.0.1918 now strips '$' from identifiers and generates usable Java.
Workaround: The relevent libraries are located underneath the OrindaBuild install directory and can be added manually using the Project/Project Properties/Libraries window.
Resolution:The button now adds either the demo library or the 8.1.5 - 10.1.0 libraries depending on which version of OrindaBuild is being installed. The button will not work if OrindaBuild is installed in a non-standard location - in that case the Workaround above should be used instead.
This has been fixed - You now get a message advising you to select a Project first.
Resolution:We identified and fixed a poorly performing SQL statement. It now uses the right index and has been tested against over 1000 interrelated tables without any issues.
Resolution: In order for the licence code to be accepted you need to press the Reset Licence Code button on the OrindaBuild Preferences screen screen. We have amended the documentation to make this clearer.
Problem: When you try to start OrindaBuild from within Eclipse you get a "Problem Opening Wizard" Modal Message
Analysis: This is known to occur when you attempt to use the Plugin with Eclipse 2.1.3. OrindaBuild is not supported on Eclipse versions prior to 3.0.0. If you get this with Eclipse 3.0 please contact our support team.
Problem: java.lang.NumberFormatException is thrown when using Java 1.5 and returning a cursor containing a CLOB, BLOB, LONG or BFILE
Analysis:
Prir to Java 1.5 an attempt to convert a number > 2GB to an int would lead to a
java.lang.NumberFormatException whose message was a String containing the number that was too big.
In Java 1.5 this changes and the number is embedded in the middle of an error message such as:
For input string: "value"
NumberFormatException is thrown by the getPrecision
method of Oracle's ResultSetMetaData class when the column is a BFILE, CLOB or BLOB. The
constructor for com.orindasoft.pub.ReadOnlyRowSet catches it and extracts the number from the Exception text.
This step was failing for Java 1.5 until we added code to strip out the new message text before trying to turn it into a number.
Resolution: A new build (4.0.2070) which fixes this bug has been deployed.
OrindaBuild patches can only be installed if a prior installation of the Full version of OrindaBuild exists first. Installing a patch will not affect the expiry date of your previously installed copy.
Eclipse 3.3 Beta