Files
eusebe-cda 2c7c8f1899 Dbeaver/dbeaver#18964 sqlite strict table support (#37294)
* #18964 SQLite addnig STRICT typing support

* Use of treeInjection

* tabs repace...

* ShadelessFox suggestions

* SQL Metadata query reformated

* adding driver version check

* check class of objects before cast

---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: Serge Rider <serge@jkiss.org>
Co-authored-by: MashaKorax <84867187+MashaKorax@users.noreply.github.com>
2025-04-25 15:20:40 +02:00

150 lines
7.5 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.2"?>
<plugin>
<extension point="org.jkiss.dbeaver.generic.meta">
<meta id="sqlite" class="org.jkiss.dbeaver.ext.sqlite.model.SQLiteMetaModel"
driverClass="org.sqlite.JDBC,com.dbeaver.jdbc.driver.libsql.LibSqlDriver" dialect="sqlite"/>
</extension>
<extension point="org.jkiss.dbeaver.dataSourceProvider">
<datasource
class="org.jkiss.dbeaver.ext.sqlite.model.SQLiteDataSourceProvider"
description="SQLite"
id="sqlite"
parent="generic"
label="SQLite"
icon="icons/sqlite_icon.png"
dialect="sqlite">
<treeInjection path="generic/catalog/schema/table"
changeFolderType="org.jkiss.dbeaver.ext.sqlite.model.SQLiteTable"/>
<treeInjection path="generic/catalog/schema/table/attribute"
changeFolderType="org.jkiss.dbeaver.ext.sqlite.model.SQLiteTableColumn"/>
<treeInjection path="generic/catalog/schema/table/association"
changeFolderType="org.jkiss.dbeaver.ext.sqlite.model.SQLiteTableForeignKey"/>
<treeInjection path="generic/catalog/schema/view"
changeFolderType="org.jkiss.dbeaver.ext.sqlite.model.SQLiteView"/>
<treeInjection path="generic/catalog/schema/view/attribute"
changeFolderType="org.jkiss.dbeaver.ext.sqlite.model.SQLiteTableColumn"/>
<drivers managable="true">
<driver
id="sqlite_jdbc"
label="SQLite"
icon="icons/sqlite_icon.png"
iconBig="icons/sqlite_icon_big.png"
class="org.sqlite.JDBC"
sampleURL="jdbc:sqlite:{file}"
supportedConfigurationTypes="MANUAL,URL"
defaultPort=""
webURL="https://github.com/xerial/sqlite-jdbc"
propertiesURL="https://www.sqlite.org/pragma.html"
databaseDocumentationSuffixURL="Database-driver-SQLite"
embedded="true"
anonymous="true"
description="SQLite JDBC driver"
promoted="1"
categories="sql,embedded">
<replace provider="generic" driver="sqlite_zentus"/>
<replace provider="generic" driver="sqlite_xerial"/>
<replace provider="generic" driver="sqlite_ch_werner"/>
<replace provider="generic" driver="sqlite_jdbc"/>
<file type="jar" path="maven:/org.xerial:sqlite-jdbc:RELEASE" bundle="!drivers.sqlite.xerial"/>
<file type="license" path="licenses/external/asl-2.0.txt"/>
<file type="jar" path="drivers/sqlite/xerial" bundle="drivers.sqlite.xerial"/>
<parameter name="supports-references" value="true"/>
<parameter name="supports-struct-cache" value="false"/>
<parameter name="supports-indexes" value="true"/>
<parameter name="supports-stored-code" value="false"/>
<parameter name="supports-truncate" value="false"/>
</driver>
<!-- LibSQL / Turso-->
<driver
id="libsql_jdbc"
label="LibSQL"
class="com.dbeaver.jdbc.driver.libsql.LibSqlDriver"
icon="icons/libsql_icon.png"
iconBig="icons/libsql_icon_big.png"
sampleURL="jdbc:dbeaver:libsql:{server}"
defaultDatabase="http://localhost"
description="LibSQL DBeaver JDBC driver. Works with standalone LibSQL server and with Turso."
webURL="https://github.com/tursodatabase/libsql"
databaseDocumentationSuffixURL="Database-driver-LibSQL"
singleConnection="true"
supportedConfigurationTypes="MANUAL,URL"
supportedPageFields="server"
categories="sql">
<parameter name="supports-references" value="true"/>
<parameter name="supports-struct-cache" value="true"/>
<parameter name="supports-indexes" value="true"/>
<parameter name="supports-stored-code" value="false"/>
<parameter name="supports-truncate" value="false"/>
<parameter name="term-server" value="%props.term.server.name"/>
</driver>
<main-properties drivers="libsql_jdbc">
<propertyGroup label="Settings">
<property id="server" label="Server" type="string"/>
</propertyGroup>
</main-properties>
</drivers>
</datasource>
</extension>
<extension point="org.jkiss.dbeaver.objectManager">
<manager class="org.jkiss.dbeaver.ext.sqlite.edit.SQLiteTableManager"
objectType="org.jkiss.dbeaver.ext.sqlite.model.SQLiteTable"/>
<manager class="org.jkiss.dbeaver.ext.sqlite.edit.SQLiteTableColumnManager"
objectType="org.jkiss.dbeaver.ext.sqlite.model.SQLiteTableColumn"/>
<manager class="org.jkiss.dbeaver.ext.sqlite.edit.SQLiteTableForeignKeyManager"
objectType="org.jkiss.dbeaver.ext.sqlite.model.SQLiteTableForeignKey"/>
<manager class="org.jkiss.dbeaver.ext.sqlite.edit.SQLiteViewManager"
objectType="org.jkiss.dbeaver.ext.sqlite.model.SQLiteView"/>
</extension>
<extension point="org.jkiss.dbeaver.dataTypeProvider">
<provider
class="org.jkiss.dbeaver.ext.sqlite.model.data.SQLiteValueHandlerProvider"
description="SQLite data types provider"
id="SQLiteValueHandlerProvider"
parent="GenericValueHandlerProvider"
label="SQLite data types provider">
<datasource id="sqlite"/>
<type name="*"/>
</provider>
</extension>
<extension point="org.jkiss.dbeaver.sqlInsertMethod">
<method id="sqLiteInsertIgnore" class="org.jkiss.dbeaver.ext.sqlite.model.SQLiteInsertReplaceMethodIgnore"
label="INSERT OR IGNORE" description="Insert ignore duplicate key value"/>
<method id="sqLiteReplaceIgnore" class="org.jkiss.dbeaver.ext.sqlite.model.SQLiteInsertReplaceMethod"
label="INSERT OR REPLACE" description="Insert replace duplicate key value"/>
</extension>
<extension point="org.jkiss.dbeaver.sqlDialect">
<dialect id="sqlite" parent="generic" class="org.jkiss.dbeaver.ext.sqlite.model.SQLiteSQLDialect" label="SQLite"
description="SQLite dialect." icon="icons/sqlite_icon.png">
<property name="insertMethods" value="sqLiteInsertIgnore,sqLiteReplaceIgnore"/>
</dialect>
</extension>
<extension point="org.jkiss.dbeaver.dataSourceAuth">
<authModel
id="libsql_token_jdbc"
label="LibSQL Authentication"
description="LibSQL token based authentication"
class="org.jkiss.dbeaver.ext.sqlite.auth.LibSQLAuthModelToken"
default="true">
<datasource driver="libsql_jdbc"/>
<replace model="native"/>
</authModel>
</extension>
</plugin>