phoenix-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From James Taylor <jamestay...@apache.org>
Subject Re: REG: Issue when creating a Phoenix table through JDBC
Date Thu, 15 Oct 2015 06:21:51 GMT
Have you tried double single quotes for the escaping?

On Wed, Oct 14, 2015 at 11:19 PM, Ns G <nsgnsg84@gmail.com> wrote:

> Hi James,
>
> It is actually not a single sql statement. For simplicity I have just
> mentioned one. I guess the issue is orginating  because of the quotes we
> need to surrond the word "SNAPPY". I have tried escaping them but no
> success.
>
> Thanks
> On 15-Oct-2015 11:46 am, "James Taylor" <jamestaylor@apache.org> wrote:
>
>> Kind of a guess, but if you're parsing a single SQL statement, it
>> shouldn't have a semicolon at the end. If that's part of the string, can
>> you try removing it?
>>
>> On Wed, Oct 14, 2015 at 11:11 PM, Ns G <nsgnsg84@gmail.com> wrote:
>>
>>> Hi All,
>>>
>>> I have a requirement where in i need to create tables to JDBC (actually
>>> Spring).
>>>
>>> I have written the below code
>>>
>>> protected Boolean executeScript(final Reader reader, String action, Long
>>> serviceId) throws IOException, SQLException {
>>>         try {
>>>             long start = System.currentTimeMillis();
>>>             final BufferedReader bufferedReader = new
>>> BufferedReader(reader);
>>>             Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");
>>>             Connection connection = null;
>>>             String url = "jdbc:phoenix:<regionserver>";
>>>             connection = DriverManager.getConnection(url);
>>>             for (String sql = bufferedReader.readLine(); sql != null;
>>> sql = bufferedReader.readLine()) {
>>>                 String trimmedSql = sql.trim();
>>>                 final boolean ignore = (trimmedSql.length() == 0 ||
>>> trimmedSql.startsWith("--") || trimmedSql.startsWith("//") ||
>>> trimmedSql.startsWith("/*"));
>>>                 if (!ignore) {
>>>                     if (trimmedSql.endsWith(";")) {
>>>                         trimmedSql = trimmedSql.substring(0,
>>> trimmedSql.length() - 1);
>>>                     }
>>>                     Statement stmt = null;
>>>                     /* tables */
>>>                     stmt = connection.createStatement();
>>>                     if (action.equalsIgnoreCase("CREATE") &&
>>> (trimmedSql.toUpperCase().startsWith("CREATE") ||
>>> trimmedSql.toUpperCase().startsWith("UPSERT"))){
>>>                         stmt.execute( MessageFormat.format(trimmedSql,
>>> getSchemNameFromServiceId(serviceId)));
>>>                     } else if (action.equalsIgnoreCase("DROP") &&
>>> trimmedSql.toUpperCase().startsWith("DROP")){
>>>                         stmt.execute( MessageFormat.format(trimmedSql,
>>> getSchemNameFromServiceId(serviceId)));
>>>                     }
>>>                     stmt.close();
>>> /*  SPRING CODE */
>>>
>>>                     /*                    if
>>> (action.equalsIgnoreCase("CREATE") &&
>>> (trimmedSql.toUpperCase().startsWith("CREATE") ||
>>> trimmedSql.toUpperCase().startsWith("UPSERT"))){
>>>                         jdbcTemplate.execute(
>>> MessageFormat.format(trimmedSql, getSchemNameFromServiceId(serviceId)));
>>>                     } else if (action.equalsIgnoreCase("DROP") &&
>>> trimmedSql.toUpperCase().startsWith("DROP")){
>>>                         jdbcTemplate.execute(
>>> MessageFormat.format(trimmedSql, getSchemNameFromServiceId(serviceId)));*/
>>>                 }
>>>             }
>>>             return true;
>>>         } catch (Exception e) {
>>>             return false;
>>>         }
>>>
>>>     }
>>>
>>> My .sql file is under src/main/resources/queries folder.
>>>
>>> My sql query is
>>>
>>> CREATE TABLE TEST (ID UNSIGNED_LONG NOT NULL PRIMARY KEY,  ID1  VARCHAR)
>>> SALT_BUCKETS=32, COMPRESSION='SNAPPY';
>>>
>>> I am getting below error
>>>
>>> org.apache.phoenix.exception.PhoenixParserException: ERROR 604 (42P00):
>>> Syntax error. Mismatched input. Expecting "STRING_LITERAL", got "<EOF>"
at
>>> line 1, column 113.
>>>
>>> I saw that a similiar case was raised previously for 4.2 version, where
>>> in the user didnt give a comma, But here the query works when executing
>>> through sqlline.
>>>
>>> Can anyone help me please?
>>>
>>> Thanks,
>>> Durga Prasad
>>>
>>
>>

Mime
View raw message