DuckDB extension - 1.3.2.0

The first version of our DuckDB extension is published, requires Lucee 6.2.1 or newer

DuckDB is a powerful database with lots of additional extensions for a large range of data formats like Apache Iceberg and Parquet

Check out the tests for examples of how to connect to it

It’s important to keep in mind and understand the DuckDB concurrency model

Available via the Lucee Admin or via downloads

2 Likes

Thnx so much 4 this!
Will experiment with this new extension in the coming weeks and see if I can get things working as we want / intended.

Just published 1.3.2.1

https://download.lucee.org/#811918E2-796C-4354-8374B1F331118AEB

image

I can happily say we have this extension working in our DEV environment, in an ORM driven webapp. We need to change some stuff in the beans and controllers, but basically it’s running. We’ll use it to showcase a database driven website switching only the DB layer out (MSSQL => DuckDB).

1 Like

In Lucee Administrator, I get an error adding a DuckDB Datasource of type “file” and specifying a full path to my .duckdb file.

Here’s the error - you see the extension I provided is .duckdb:
path [/home/webdude/Programs/LuceeExpress/nth.duckdb] needs to specify a file with a extension, i.e .duckdb, .db, etc

My system:
Linux Mint 22.1 Cinnamon
Lucee Express 6.2.2.91
DuckDB extension 1.3.2.1
OpenJDK21U-jdk_x64_linux_hotspot_21.0.8_9

I created the .duckdb file with the DuckDB CLI before specifying it in the Administrator.

Any help greatly appreciated.

Is there a stacktrace?

I have this…

lucee.runtime.exp.CustomTypeException: path [/home/webdude/Programs/LuceeExpress/nth.duckdb] needs to specify a file with a extension, i.e .duckdb, .db, etc at lucee.runtime.tag.Throw._doStartTag(Throw.java:225) at lucee.runtime.tag.Throw.doStartTag(Throw.java:212) at dbdriver.duckdb_cfc$cf$1.udfCall(/lucee/admin/dbdriver/DuckDB.cfc:134) at lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:112) at lucee.runtime.type.UDFImpl._call(UDFImpl.java:357) at lucee.runtime.type.UDFImpl.call(UDFImpl.java:224) at lucee.runtime.ComponentImpl._call(ComponentImpl.java:731) at lucee.runtime.ComponentImpl._call(ComponentImpl.java:604) at lucee.runtime.ComponentImpl.call(ComponentImpl.java:2110) at lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:773) at lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:2081) at services_datasource_create_cfm1334$cf.call(/admin/services.datasource.create.cfm:26) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:1118) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:1012) at lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:993) at services_datasource_cfm414$cf.call(/admin/services.datasource.cfm:108) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:1118) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:1012) at lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:993) at web_cfm$cf.call_000007(/admin/web.cfm:521) at web_cfm$cf.call(/admin/web.cfm:515) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:1118) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:1012) at lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:993) at index_cfm$cf.call(/admin/index.cfm:3) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:1118) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:1012) at lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:213) at lucee.runtime.listener.ModernAppListener.onRequest(ModernAppListener.java:100) at lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2816) at lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2803) at lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2774) at lucee.runtime.engine.Request.exe(Request.java:45) at lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1113) at lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1070) at lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:97) at lucee.loader.servlet.jakarta.CFMLServlet.service(CFMLServlet.java:52) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:130) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:109) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:79) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:116) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:666) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:396) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1773) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:59) at java.base/java.lang.Thread.run(Thread.java:1583)