<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Jul 3, 2012, at 4:35 PM, Craig Soules wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>I'm sure someone has seen this before, so hopefully this will be easy to answer.</div></blockquote><div><br></div>I think this is a new issue. (Some other problems are logged in&nbsp;<a href="http://jira.pentaho.com/browse/MONDRIAN-789">http://jira.pentaho.com/browse/MONDRIAN-789</a>.)&nbsp;But I'll give it my best shot...</div><div><br><blockquote type="cite"><div>I'm trying to hook up Mondrian to Hive. &nbsp;I noticed that there is a HiveDialect implementation, but that it was not listed in the META-INF/services/mondrian.spi.Dialect file in the 3.4.1 release. &nbsp;I've tried several methods for adding it (described below), but I keep feeling the following error:</div>
<div><br></div><div><div>Main error</div><div>mondrian.olap.MondrianException: Mondrian Error:Internal error: while quoting identifier</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at mondrian.resource.MondrianResource$_Def0.ex(MondrianResource.java:942)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at mondrian.olap.Util.newInternal(Util.java:2261)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at mondrian.spi.impl.JdbcDialectImpl.deduceIdentifierQuoteString(JdbcDialectImpl.java:179)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at mondrian.spi.impl.JdbcDialectImpl.&lt;init&gt;(JdbcDialectImpl.java:113)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at mondrian.spi.DialectManager$DialectManagerImpl$1.createDialect(DialectManager.java:173)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at mondrian.spi.DialectManager$ChainDialectFactory.createDialect(DialectManager.java:278)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at mondrian.spi.DialectManager$CachingDialectFactory.createDialect(DialectManager.java:377)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at mondrian.spi.DialectManager$DialectManagerImpl.createDialect(DialectManager.java:237)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at mondrian.spi.DialectManager.createDialect(DialectManager.java:80)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at mondrian.test.loader.MondrianFoodMartLoader.load(MondrianFoodMartLoader.java:380)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at mondrian.test.loader.MondrianFoodMartLoader.main(MondrianFoodMartLoader.java:342)</div>
<div>Caused by: java.sql.SQLException: Method not supported</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.apache.hadoop.hive.jdbc.HiveDatabaseMetaData.getIdentifierQuoteString(HiveDatabaseMetaData.java:356)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at mondrian.spi.impl.JdbcDialectImpl.deduceIdentifierQuoteString(JdbcDialectImpl.java:172)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>... 8 more</div>
</div><div><br></div><div>I believe this indicates that the default JdbcDialectImpl is being used instead of the HiveDialect</div></blockquote><div><br></div><div>You are correct. HiveDialect overrides deduceIdentifierQuoteString, but only the base method occurs in the stack.</div><br><blockquote type="cite"><div>... I can't seem to figure out why or how to fix it.&nbsp; I tried unpacking mondian.jar, adding a line for the HiveDialect, and re-packing it. &nbsp;I have also tried re-building Mondrian from scratch with that line added to the build's version of the file, also with no success.</div></blockquote><div><br></div><div>You're trying to do the right thing. I don't know why adding a line to mondrian.spi.Dialect doesn't work.</div><div><br></div><div>Are you running under a web server such as tomcat? Sometimes web servers will unpack to their working directory and your modified version won't be seen.</div><br><blockquote type="cite">
<div>I know that my JDBC parameters are correct, because I can see Mondrian connecting to Hive, but because Hive's JDBC driver is not full-featured (thus the need for the HiveDialect), I keep getting this failure.</div>
<div><br></div><div>Any pointers or help on this would be much appreciated!</div></blockquote><div><br></div><div>Reading the code, there is probably a problem in JdbcDialectImpl.getProduct. It never returns DatabaseProduct.HIVE. Try adding an appropriate 'else if' clause.</div><div><br></div><div>I will add a line to mondrian.spi.Dialect. Even thought the Hive dialect is only beta quality, we might as well register it. I will also add a Dialect parameter to Mondrian's connect string; we might as well allow people to explicitly specify a dialect class, if they know what they want.</div><div><br></div>Hope this helps. Please let me know whether or not this solves your problem. I'd like to resolve this issue.</div><div><br></div><div>Julian</div></body></html>