Skip to main content
Open

InlineQuerier: Support ":memory:" temporary SQLite in-memory filepath

Related products:Transformers
  • October 12, 2024
  • 1 reply
  • 34 views

bwn
Evangelist
Forum|alt.badge.img+26

Idea is to add new InlineQuerier Parameter “Use In-Memory DB”

 

Previously established that InlineQuerier essentially creates a temporary, on-disk SQLite database file, writes input features into it, performs the queries and deletes the SQLite file afterwards.

The current FME approach has a number of drawbacks however including:

  • Overhead to write the input feature tables to disk
  • Query performance throttled by disk I/O
  • Can consume a not in-significant amount of disk space for the temporary query

Having tested these back-to-back in Python environments (when I was scripting in Python before discovering FME 😉 ) there is often a very large performance difference for large datasets between on-disk and in-memory databases.

Programmatically, I suspect this is likely a fairly easy enhancement, because this would utilise exactly the same API sqlite3_open() command that creates+opens the SQLite database as InlineQuerier would use now.

Instead of the current InlineQuerier SQLite API call that I suspect looks like this

sqlite3_open(FME_Temporary_SQLite_file_name, ...)

...the suggested optional parameter above for in-memory DB would simply change the InlineQuerier API call to this

sqlite3_open(":memory:", ...)

Also running out of memory is not usually an issue as the standard PRAGMA settings will cache to disk any of the in-memory DB where necessary to to keep within RAM limits.

1 reply

LizAtSafe
Safer
Forum|alt.badge.img+18
  • Safer
  • March 11, 2025
NewOpen