[
https://issues.apache.org/jira/browse/DERBY-6256?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13681386#comment-13681386
]
Rick Hillegas commented on DERBY-6256:
--------------------------------------
Hi Mike,
Thanks for continuing this discussion. I can move the XmlVTI class into the
tools jar if people feel strongly about this. I think of it as similar to the
ForeignTableVTI class, which is already in the engine jar. It may look awkward
if some of the support VTIs are in the engine jar and some are in the tools jar.
Note that the ForeignTableVTI is intended for use in production (for ongoing
data integration) and for use by tech support during disaster recovery. From
discussions on the user list, it's clear that people use it. This is production
code. In my opinion, so is the XmlVTI.
Right now there are 4 optional tools:
1) databaseMetaData - This is appropriate for use in production code and we
document it.
2) foreignViews - This is also appropriate for use in production code and we
document it.
3) optimizerTracing - The new xml-style tracing is intended to help diagnose
performance problems in production. We don't currently document either style of
optimizer tracing. If we were to document the old-style optimizer trace, I
think that all we could tell people would be to send us the output. I think
that the xml-style trace could potentially be used to guide a customer to the
selection of optimizer overrides for working around a production problem.
4) optimizerTracingViews - Used in conjunction with xml-style optimizer
tracing, this tool can be used in production to guide a customer to a
workaround.
Cloudscape/Derby has always aimed at being an easy-to-use database. But we
don't deliver on this promise when it comes to monitoring/diagnosing production
problems. Monitoring and diagnostics are areas where we have under-invested
significantly. I don't know where to draw the line between our
monitoring/diagnostic tools and monitoring/diagnostic tools which might be more
appropriate for a separate Apache project. But my gut feeling is that we are
very far away from that line right now. Within our existing charter, we could
devote several releases to building out our monitoring/diagnostic apis.
The topic of the debug engine probably deserves its own, separate discussion on
derby-dev. Derby's approach to diagnostic information is distinctive and maybe
almost unique in our industry. I can't think of any other product I use which
requires me to bring down the application and install separate software in
order to run actionable diagnostics. This is clearly awkward for database
applications which need to run 24x7. Sometime in the distant past, we seem to
have confused the concepts of "development debugging" and "production
diagnostics." Much of our debug code is just for us as we develop features. But
some of our debug code is meant to be run in production in order to produce
useful diagnostic information. In my opinion, any code that could potentially
be useful in production should be in the product. We shouldn't even ship debug
jars as part of our release distributions. The debug jars should only be used
during the development of Derby itself. I would not recommend isolating useful
production diagnostics in debug code.
Thanks,
-Rick
> Move the XmlVTI into the product.
> ---------------------------------
>
> Key: DERBY-6256
> URL: https://issues.apache.org/jira/browse/DERBY-6256
> Project: Derby
> Issue Type: Improvement
> Components: SQL, Tools
> Affects Versions: 10.11.0.0
> Reporter: Rick Hillegas
> Assignee: Rick Hillegas
> Attachments: derby-6256-01-aa-move-XmlVTI-into-product.diff,
> derby-6256-02-aa-allowParentTags.diff
>
>
> The XmlVTI under derbyDemo has been useful to me for many years. It has
> become even more useful now that Derby supports varargs. That is because
> varargs make it very easy to declare an XmlVTI. At this point, I think it is
> worth re-phrasing the XmlVTI in terms of varargs and moving it into the
> product so that we can use it for internal table functions. There is no rush
> to expose XmlVTI as part of Derby's public api, but we could consider doing
> that if other people find this table function to be useful.
> The XmlVTI is a table function which turns an xml file into a tabular data
> set which you can query via sql. When you declare an XmlVTI, you state the
> following arguments:
> 1) The url of an xml file.
> 2) The name of the element in the xml file which you want to treat as a
> record or row.
> 3) The names of the attributes and subelements of that record which you want
> to treat as columns. Now that we have varargs, it is possible to represent
> this trailing argument as a variable length argument list.
--
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