Magnus Mogren created CALCITE-6675:
--------------------------------------
Summary: JDBC adapter does not work for SQL server if connection
string contains semicolon
Key: CALCITE-6675
URL: https://issues.apache.org/jira/browse/CALCITE-6675
Project: Calcite
Issue Type: Bug
Components: jdbc-adapter
Affects Versions: 1.38.0
Reporter: Magnus Mogren
For SQL server the connection URL contains semicolon.
If im using an inline model and passes that to DriverManager.getConnection then
the class org.apache.calcite.avatica.ConnectStringParser will destroy the model
since it uses semicolon as a delimiter.
*Inline model connection string:*
{code:java}
jdbc:calcite:model=inline:{
version: '1.0',
defaultSchema: 'TheSchema',
schemas: [
{
name: 'TheSchema',
type: 'custom',
factory: 'org.apache.calcite.adapter.jdbc.JdbcSchema$Factory',
operand: {
jdbcDriver: 'com.microsoft.sqlserver.jdbc.SQLServerDriver',
jdbcUrl:
'jdbc:sqlserver://theserver:1433;databaseName=thedbname;encrypt=true;',
jdbcUser: 'theuser',
jdbcPassword: 'thepassword'
}
}
]
} {code}
The result is an error like this
{noformat}
Unexpected end-of-input: was expecting closing quote for a string value
at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION`
disabled); line: someline, column: somecolumn] (through reference chain:
org.apache.calcite.model.JsonRoot["schemas"]->java.util.ArrayList[1]->org.apache.calcite.model.JsonCustomSchema["operand"]){noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)