[ 
https://issues.apache.org/jira/browse/DERBY-4550?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sylvain Leroux updated DERBY-4550:
----------------------------------

    Attachment: DERBY-4550_5.patch

Here is the 5th version of this patch.

As I suspected first, the errors in some tests are caused by the fact that ij 
now reports the connection as part as the identifier when an error in 
encountered.

As you noticed here, this slightly breaks the observable behavior of ij. But I 
think from an user point of view it is important to report the connection name 
as well as the unqualified identifier in order to clearly distinguish a faulty 
statement.

I chose to update all the related tests in order to reflect that. Here are some 
examples of such changes (extract from the attached patch):
  Index: 
java/testing/org/apache/derbyTesting/functionTests/master/holdCursorIJ.out
  [...]
  -IJ ERROR: Unable to establish cursor
  +IJ ERROR: Unable to establish cursor j...@connection0

  Index: 
java/testing/org/apache/derbyTesting/functionTests/master/implicitConversions.out
  [...]
  -IJ ERROR: Unable to establish prepared statement P1
  +IJ ERROR: Unable to establish prepared statement p...@connection0


Now pass the following tests without any error:
 java org.apache.derbyTesting.functionTests.harness.RunSuite derbylang
 java org.apache.derbyTesting.functionTests.harness.RunSuite derbytools
 java junit.textui.TestRunner 
org.apache.derbyTesting.functionTests.tests.lang.LangScripts
 java junit.textui.TestRunner 
org.apache.derbyTesting.functionTests.tests.tools.ToolScripts 

----

Concerning a possible use of qualified identifiers in the PROTOCOL statement:

I didn't notice a previous comment on this:
  > 3) Connection-scoped variables. These include the names of prepared 
statements, cursors, and protocols. 

In fact, protocols are not connection-scoped: protocols identifiers are 
currently bound the parser instance, not to a session object. It feels like 
some kind of global identifier to me. Moreover, the PROTOCOL statement could be 
issued before opening any connection (i.e.: before any session object was 
available):
  sh$  java org.apache.derby.tools.ij 
  ij version 10.6
  ij> PROTOCOL 'jdbc:derby:memory:' AS memory;
  ij> CONNECT 'a;create=true;user=fred' PROTOCOL memory;
  ij> CONNECT 'b;create=true' PROTOCOL memory;

Please note I never really used that statement, so it's quite possible I missed 
some important point here.

----

An other possible candidate for qualified identifiers could be the DESCRIBE 
statement. But I think this is part of an other issue, since DESCRIBE requires 
some special treatment (it uses its own production caIdentifier).

> Using ij to copy data from one DB to an other
> ---------------------------------------------
>
>                 Key: DERBY-4550
>                 URL: https://issues.apache.org/jira/browse/DERBY-4550
>             Project: Derby
>          Issue Type: Improvement
>          Components: Tools
>            Reporter: Sylvain Leroux
>            Assignee: Sylvain Leroux
>            Priority: Minor
>         Attachments: DERBY-4550.diff, DERBY-4550.sql, DERBY-4550_2.diff, 
> DERBY-4550_2.sql, DERBY-4550_3.patch, DERBY-4550_3.sql, DERBY-4550_4.patch, 
> DERBY-4550_4.sql, DERBY-4550_5.patch
>
>
> It is possible to have open connections to several databases while running 
> ij, but it is not currently possible to copy data from one DB to an other one.
> Not only such a feature would allow to copy data between Derby databases. 
> But, ij being mostly DB agnostic, if will ease import/export from any JDBC 
> compliant data source.
> See 
> http://old.nabble.com/Using-IJ-to-copy-data-from-one-DB-to-an-other-one-td27598138.html

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to