dremio singlestore arp 扩展
此插件来自singlestore官方的,基于了dremio 23.1 版本开发
conf 配置类
@SourceType(value = "SINGLESTOREARP", label = "SingleStore", uiConfig = "singlestore-layout.json", externalQuerySupported = true)
public class SingleStoreConf extends AbstractArpConf<SingleStoreConf> {
private static final String ARP_FILENAME = "arp/implementation/singlestore-arp.yaml";
private static final ArpDialect ARP_DIALECT =
AbstractArpConf.loadArpFile(ARP_FILENAME, (ArpDialect::new));
private static final String DRIVER = "com.singlestore.jdbc.Driver";
@NotBlank
@Tag(1)
@DisplayMetadata(label = "Host")
public String host;
@Tag(2)
@DisplayMetadata(label = "Port")
public int port = 3306;
@NotBlank
@Tag(3)
@DisplayMetadata(label = "Database")
public String database;
@NotBlank
@Tag(4)
@DisplayMetadata(label = "Username")
public String user;
@NotBlank
@Tag(5)
@Secret
@DisplayMetadata(label = "Password")
public String password;
@Tag(6)
@DisplayMetadata(label = "Use SSL")
public boolean useSsl;
@Tag(7)
@DisplayMetadata(label = "Server Certificate")
public String serverSslCert;
@Tag(8)
@DisplayMetadata(label = "Record fetch size")
@NotMetadataImpacting
public int fetchSize = 200;
@Tag(9)
@DisplayMetadata(label = "Maximum idle connections")
@NotMetadataImpacting
public int maxIdleConns = 8;
@Tag(10)
@DisplayMetadata(label = "Connection idle time (s)")
@NotMetadataImpacting
public int idleTimeSec = 60;
@Tag(11)
public List<Property> propertyList;
@VisibleForTesting
public String toJdbcConnectionString() {
String url = String.format("jdbc:singlestore://%s:%s", host, port);
boolean userProvided = false;
if (database != null && !database.equals("")) {
url += String.format("/%s", database);
}
if (user != null && !user.equals("")) {
url += String.format("?user=%s", user);
userProvided = true;
}
if (password != null && !password.equals("")) {
url += String.format("%spassword=%s", userProvided ? "&" : "?", password);
}
if (useSsl) {
url += "&useSsl=true";
}
if (serverSslCert != null && !serverSslCert.equals("")) {
url += String.format("&serverSslCert=%s", serverSslCert);
}
if (this.propertyList != null) {
for (Property p : this.propertyList) {
url += String.format("&%s=%s", p.name, p.value);
}
}
return url;
}
@Override
@VisibleForTesting
public JdbcPluginConfig buildPluginConfig(
JdbcPluginConfig.Builder configBuilder,
CredentialsService credentialsService,
OptionManager optionManager
) {
return configBuilder.withDialect(getDialect())
.withDialect(getDialect())
.withFetchSize(fetchSize)
.withDatasourceFactory(this::newDataSource)
.clearHiddenSchemas()
.addHiddenSchema("SYSTEM")
.build();
}
private CloseableDataSource newDataSource() {
return DataSources.newGenericConnectionPoolDataSource(DRIVER,
toJdbcConnectionString(), user, password, null, DataSources.CommitMode.DRIVER_SPECIFIED_COMMIT_MODE,
maxIdleConns, idleTimeSec);
}
@Override
public ArpDialect getDialect() {
return ARP_DIALECT;
}
@VisibleForTesting
public static ArpDialect getDialectSingleton() {
return ARP_DIALECT;
}
}
arp 配置
核心是类型映射,主要在src/main/resources/arp/implementation/singlestore-arp.yaml
主要禁用了catalog ,以及schema,其他部分可以参考实际内容
syntax:
# Manually Configured Syntax Section.
identifier_quote: '`'
identifier_length_limit: 128
allows_boolean_literal: true
map_boolean_literal_to_bit: false
supports_catalogs: false
supports_schemas: false
说明
jdbc 驱动需要自己下载放到dremio 的classpath 路径下,通过singlestore 官方的dremio arp 扩展可以了解一些开发,实际上singlestore 的jdbc
是基于了mariadb-connector-j
参考资料
https://github.com/memsql/dremio-singlestore
https://github.com/memsql/S2-JDBC-Connector
https://github.com/mariadb-corporation/mariadb-connector-j
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2022-01-08 修改juicefs 源码使用oceanbase做为元数据存储
2022-01-08 mysql 做为juicefs 的元数据存储
2021-01-08 gosimple/slug 生成url 友好的slug
2021-01-08 graphjin super-graph的升级版本
2021-01-08 编译cratedb 支持多集群节点部署
2020-01-08 email-templates 集成mjml 的另外一个方法
2020-01-08 email-templates + mjml 发送邮件