[
https://issues.apache.org/jira/browse/DERBY-6216?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Bryan Pendleton updated DERBY-6216:
-----------------------------------
Attachment: xplain-only.diff
OK, I think I've finally got a patch worth consideration by the community, and
would appreciate any feedback.
This patch follows the approach suggested by Knut Anders,
in which we allow the result set(s) to be opened, but then
short-circuit the "get next row" routine if we are in xplain-only mode.
One interesting detail is that, for queries such as GROUP BY
and other complex situations where we have internal sort
operations and other intermediate results, to get a true
explain-only mode of operation we need to check in the
result set constructor, and not wait until the result set is
opened, since many result sets do substantial work even
in their low-level constructors.
The patch includes a complete set of code changes, which
touch a number of files but are quite small, and a small set
of test changes. Undoubtedly we need more tests, but they
take a while to write and maintain so suggestions about
particularly high-value tests to write would be appreciated.
In my particular environment, I don't have a large amount
of computing horsepower, so I've only run a subset of the
tests. In particular, I've run o.a.dT.functionTests.tests.lang._Suite with zero
errors.
If anyone has the time/resources to run other regression
tests with this patch, that would be very nice.
> XPLAIN feature does not work and gives ERROR XCL16: ResultSet not open
> ----------------------------------------------------------------------
>
> Key: DERBY-6216
> URL: https://issues.apache.org/jira/browse/DERBY-6216
> Project: Derby
> Issue Type: Bug
> Components: Tools
> Affects Versions: 10.6.2.3, 10.7.1.4, 10.8.3.1, 10.9.1.0
> Environment: Solaris 10, MacOS X 10.6, Windows XP
> Reporter: Brett Bergquist
> Assignee: Bryan Pendleton
> Labels: derby_triage10_11, features
> Attachments: addTests.diff, emptyRS.diff, xplain-only.diff
>
>
> I am running Derby 10.9.1.0 and am trying to figure out a performance
> problem with query taking too long. I don’t actually want to run the query
> so from the documentation, I try:
> call syscs_util.syscs_set_runtimestatistics(1);
> call syscs_util.syscs_set_xplain_schema('STATS');
> call syscs_util.syscs_set_xplain_mode(1);
> --- my query here
> call syscs_util.syscs_set_runtimestatistics(0);
> call syscs_util.syscs_set_xplain_schema('');
> call syscs_util.syscs_set_xplain_mode(0);
> When it runs my query, I get:
> ERROR XCL16: ResultSet not open. Operation 'getMetaData' not permitted.
> Verify that autocommit is OFF.
> I try the following with IJ just to see:
> call syscs_util.syscs_set_runtimestatistics(1);
> call syscs_util.syscs_set_xplain_schema('STATS');
> call syscs_util.syscs_set_xplain_mode(1);
> select sql_text from syscs_diag.transaction_table where status != 'IDLE';
> call syscs_util.syscs_set_runtimestatistics(0);
> call syscs_util.syscs_set_xplain_schema('');
> call syscs_util.syscs_set_xplain_mode(0);
> Note I have tried this with real tables as apposed to the
> syscs_diag.transaction_table with the same result. The only reason that I
> posted this with this table is that it is a table that is accessible for any
> database.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira