db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Knut Anders Hatlen (JIRA)" <j...@apache.org>
Subject [jira] Updated: (DERBY-4904) Plan exporter doesn't work if XPLAIN schema has special characters
Date Mon, 15 Nov 2010 15:32:14 GMT

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

Knut Anders Hatlen updated DERBY-4904:
--------------------------------------

    Attachment: d4904.diff

Attaching a patch with a fix for the problem and a test cases that exposes the bug.

The patch changes all the queries in AccessDatabase from Statement to PreparedStatement, and
makes all variable parts of the queries parameters instead of concatenating and escaping string
literals manually.

> Plan exporter doesn't work if XPLAIN schema has special characters
> ------------------------------------------------------------------
>
>                 Key: DERBY-4904
>                 URL: https://issues.apache.org/jira/browse/DERBY-4904
>             Project: Derby
>          Issue Type: Bug
>          Components: Tools
>    Affects Versions: 10.7.1.0
>            Reporter: Knut Anders Hatlen
>            Assignee: Knut Anders Hatlen
>         Attachments: d4904.diff
>
>
> If the XPLAIN schema contains lowercase characters (e.g, CALL SYSCS_UTIL.SYSCS_SET_XPLAIN_SCHEMA('my_stats_schema')),
the plan exporter will fail with
> ERROR 42Y07: Schema 'MY_STATS_SCHEMA' does not exist
> 	at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:286)
> 	at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getSchemaDescriptor(DataDictionaryImpl.java:1528)
> (...)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.executeQuery(EmbedStatement.java:153)
> 	at org.apache.derby.impl.tools.planexporter.AccessDatabase.noOfNodes(AccessDatabase.java:417)
> 	at org.apache.derby.impl.tools.planexporter.AccessDatabase.initializeDataArray(AccessDatabase.java:323)
> 	at org.apache.derby.tools.PlanExporter.main(PlanExporter.java:59)
> If the schema contains spaces or special characters, like single-quotes or double-quotes,
it will get a syntax error instead:
> ij> CALL SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
> ij> CALL SYSCS_UTIL.SYSCS_SET_XPLAIN_SCHEMA('my "quoted" schema');
> ij> SELECT * FROM SYSIBM.SYSDUMMY1;
> $ java org.apache.derby.tools.PlanExporter jdbc:derby:db 'my "quoted" schema' 6f2b430a-012c-4ec6-f4a1-00000d4d4fe5
-xml plan.xml -html plan.html
> ERROR 42X01: Syntax error: Encountered "schema" at line 1, column 34.
>     at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:286)
>     at org.apache.derby.impl.sql.compile.ParserImpl.parseStatement(ParserImpl.java:155)
> (...)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.executeQuery(EmbedStatement.java:153)
> 	at org.apache.derby.impl.tools.planexporter.AccessDatabase.noOfNodes(AccessDatabase.java:417)
> 	at org.apache.derby.impl.tools.planexporter.AccessDatabase.initializeDataArray(AccessDatabase.java:323)
> 	at org.apache.derby.tools.PlanExporter.main(PlanExporter.java:59)

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


Mime
View raw message