Menu

SQLServer Dialect

2008-07-24
2012-12-07
  • Dominik Menzi

    Dominik Menzi - 2008-07-24

    Today I tried to use your parser in an application which connects to a mssql server 2000 through hibernate, using its SQLServerDialect.
    The statement hibernate generated was this:
    select employee0_.[id] as id1_1_, employee0_.[e_version] as e3_1_, employee0_.[datecreated] as datecrea4_1_, employee0_.[usercreated_id] as usercrea5_1_, employee0_.[datemodified] as datemodi6_1_, employee0_.[usermodified_id] as usermodi7_1_, employee0_.[active] as active8_1_, employee0_.[firstname] as firstname9_1_, employee0_.[lastname] as lastname10_1_, employee0_.[officecode] as officecode11_1_, employee0_.[loginname] as loginname12_1_ from [employee] employee0_ where loginname=?

    I'm not sure whether this is valid sql-92 syntax, so I didn't file a bug report.

    Maybe I could come up with another solution (i.e. using another dialect), but the best thing of course would be support for this dialect in JSqlParser.

    I'm looking forward to your answer
    - Tangresh

    PS: A beautiful stacktrace for you :)

    net.sf.jsqlparser.JSQLParserException
        at net.sf.jsqlparser.parser.CCJSqlParserManager.parse(CCJSqlParserManager.java:40)
        at com.inventage.gse.parser.JSqlParserTest.testSQLServer(JSqlParserTest.java:25)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at junit.framework.TestCase.runTest(TestCase.java:154)
        at junit.framework.TestCase.runBare(TestCase.java:127)
        at junit.framework.TestResult$1.protect(TestResult.java:106)
        at junit.framework.TestResult.runProtected(TestResult.java:124)
        at junit.framework.TestResult.run(TestResult.java:109)
        at junit.framework.TestCase.run(TestCase.java:118)
        at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
        at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
    Caused by: net.sf.jsqlparser.parser.TokenMgrError: Lexical error at line 1, column 19.  Encountered: "[" (91), after : ""
        at net.sf.jsqlparser.parser.CCJSqlParserTokenManager.getNextToken(CCJSqlParserTokenManager.java:1318)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_scan_token(CCJSqlParser.java:5419)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_63(CCJSqlParser.java:5068)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_34(CCJSqlParser.java:5089)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_3_4(CCJSqlParser.java:4888)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_67(CCJSqlParser.java:4907)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_36(CCJSqlParser.java:3548)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_208(CCJSqlParser.java:3626)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_181(CCJSqlParser.java:3671)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_143(CCJSqlParser.java:3751)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_117(CCJSqlParser.java:4378)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_66(CCJSqlParser.java:3846)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_35(CCJSqlParser.java:3983)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_3_5(CCJSqlParser.java:4406)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_2_5(CCJSqlParser.java:2857)
        at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:549)
        at net.sf.jsqlparser.parser.CCJSqlParser.Select(CCJSqlParser.java:541)
        at net.sf.jsqlparser.parser.CCJSqlParser.Statement(CCJSqlParser.java:107)
        at net.sf.jsqlparser.parser.CCJSqlParserManager.parse(CCJSqlParserManager.java:38)
        ... 17 more
    Caused by:
    net.sf.jsqlparser.parser.TokenMgrError: Lexical error at line 1, column 19.  Encountered: "[" (91), after : ""
        at net.sf.jsqlparser.parser.CCJSqlParserTokenManager.getNextToken(CCJSqlParserTokenManager.java:1318)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_scan_token(CCJSqlParser.java:5419)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_63(CCJSqlParser.java:5068)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_34(CCJSqlParser.java:5089)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_3_4(CCJSqlParser.java:4888)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_67(CCJSqlParser.java:4907)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_36(CCJSqlParser.java:3548)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_208(CCJSqlParser.java:3626)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_181(CCJSqlParser.java:3671)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_143(CCJSqlParser.java:3751)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_117(CCJSqlParser.java:4378)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_66(CCJSqlParser.java:3846)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_35(CCJSqlParser.java:3983)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_3_5(CCJSqlParser.java:4406)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_2_5(CCJSqlParser.java:2857)
        at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:549)
        at net.sf.jsqlparser.parser.CCJSqlParser.Select(CCJSqlParser.java:541)
        at net.sf.jsqlparser.parser.CCJSqlParser.Statement(CCJSqlParser.java:107)
        at net.sf.jsqlparser.parser.CCJSqlParserManager.parse(CCJSqlParserManager.java:38)
        at com.inventage.gse.parser.JSqlParserTest.testSQLServer(JSqlParserTest.java:25)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at junit.framework.TestCase.runTest(TestCase.java:154)
        at junit.framework.TestCase.runBare(TestCase.java:127)
        at junit.framework.TestResult$1.protect(TestResult.java:106)
        at junit.framework.TestResult.runProtected(TestResult.java:124)
        at junit.framework.TestResult.run(TestResult.java:109)
        at junit.framework.TestCase.run(TestCase.java:118)
        at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
        at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

     
    • Dominik Menzi

      Dominik Menzi - 2008-07-31

      Well, I really needed jsqlparser to parse SQLServer dialect, so I adapted the javacc grammar to accept it:

      JSqlParserCC.jj, line 235
      old (jsqlparser-0.4.5):
      |   < S_QUOTED_IDENTIFIER: "\"" (~["\n","\r","\""])* "\"" >
      new:
      |   < S_QUOTED_IDENTIFIER: ("\"" (~["\n","\r","\""])* "\"") | ("[" (~["\n","\r","]"])* "]")>

      Maybe you can use this for the next release.

      - Tangresh

       
      • Leonardo Francalanci

        I'm sorry I didn't have time to look at your problem.
        I'll see if I can put that in next release. Thanks

         

Log in to post a comment.