Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

External Virtual Tables support [CORE674] #1040

Open
firebird-automations opened this issue Jan 9, 2005 · 5 comments
Open

External Virtual Tables support [CORE674] #1040

firebird-automations opened this issue Jan 9, 2005 · 5 comments

Comments

@firebird-automations
Copy link
Collaborator

Submitted by: jmccracken (jmccracken)

Votes: 7

SFID: 1098689#⁠
Submitted By: jmccracken

I have been looking for am open source RDBMS that can treat external sources of data like text/csv/xml/dbf files as a virtual table which can then be used in sql and be updateable. Informix currently supports this via an external plugin interface. I am desperately seeking an open source DB that will implement this.

My requirements are:

The plug-in interface needs to be a C API based so that just about any language can be used to create them.

It should not assume that the external interface is file based (it could be anything even another RDBMS)

It should have capability based settings (IE it could be defined as readonly or writable so not all methods would be appropriate)

The source may be live and could be changed by something else whilst firebird is using it so there needs to be a callback function in the plugin to tell firebird to refresh the source when this happens.

The API for the plugin would need to have "init" and "final" functions.

Additional syntax to SQL would be needed to activate/deactivate the plugins. I suggest extending create table to specify a plugin to activate and drop table to deactivate that plugin. On activation of a plugin the "init" function for that plugin should be called (ditto for "final" when deactivated).

Ideally virtual table implementation should have as much functionality as ordinary tables have (IE they can be indexed, have permissions etc)

@firebird-automations
Copy link
Collaborator Author

Modified by: @pcisar

Workflow: jira [ 10698 ] => Firebird [ 15089 ]

@firebird-automations
Copy link
Collaborator Author

Commented by: Vivien Malerba (vivien)

I'd really like to have that feature in Firebird...

SQLite has a virtual tables features which is fairly easy to use (you have to write some C code for that purpose), see http://www.sqlite.org/lang_createvtab.html and http://www.sqlite.org/cvstrac/wiki?p=VirtualTables.

@firebird-automations
Copy link
Collaborator Author

Commented by: Cosmin Apreutesei (cosmin_ap2)

I've been thinking about this kind of functionality for years. And it's not just for tables that you could have a C API, stored procedures and triggers too. I'd jump right in and make a library of external tables/stored procs for firebird to access filesystems, processes, heck you can even implement the Win32 API as tables and create/destroy/query its objects with SQL. Generating full GUIs would be just a matter of literally joining your business logic with the user interface.

@firebird-automations
Copy link
Collaborator Author

Commented by: Sean Leyne (seanleyne)

edited for layout/format, not content

@firebird-automations
Copy link
Collaborator Author

Modified by: Sean Leyne (seanleyne)

description: SFID: 1098689#⁠
Submitted By: jmccracken

I have been looking for am open source RDBMS that can
treat external sources of data like text/csv/xml/dbf
files as a virtual table which can then be used in sql
and be updateable. Informix currently supports this via
an external plugin interface. I am desperately seeking
an open source DB that will implement this.

My requirements are:

The plug-in interface needs to be a C API based so that
just about any language can be used to create them.

It should not assume that the external interface is
file based (it could be anything even another RDBMS)

It should have capability based settings (IE it could
be defined as readonly or writable so not all methods
would be appropriate)

The source may be live and could be changed by
something else whilst firebird is using it so there
needs to be a callback function in the plugin to tell
firebird to refresh the source when this happens.

The API for the plugin would need to have "init" and
"final" functions.

Additional syntax to SQL would be needed to
activate/deactivate the plugins. I suggest extending
create table to specify a plugin to activate and drop
table to deactivate that plugin. On activation of a
plugin the "init" function for that plugin should be
called (ditto for "final" when deactivated).

Ideally virtual table implementation should have as
much functionality as ordinary tables have (IE they can
be indexed, have permissions etc)

=>

SFID: 1098689#⁠
Submitted By: jmccracken

I have been looking for am open source RDBMS that can treat external sources of data like text/csv/xml/dbf files as a virtual table which can then be used in sql and be updateable. Informix currently supports this via an external plugin interface. I am desperately seeking an open source DB that will implement this.

My requirements are:

The plug-in interface needs to be a C API based so that just about any language can be used to create them.

It should not assume that the external interface is file based (it could be anything even another RDBMS)

It should have capability based settings (IE it could be defined as readonly or writable so not all methods would be appropriate)

The source may be live and could be changed by something else whilst firebird is using it so there needs to be a callback function in the plugin to tell firebird to refresh the source when this happens.

The API for the plugin would need to have "init" and "final" functions.

Additional syntax to SQL would be needed to activate/deactivate the plugins. I suggest extending create table to specify a plugin to activate and drop table to deactivate that plugin. On activation of a plugin the "init" function for that plugin should be called (ditto for "final" when deactivated).

Ideally virtual table implementation should have as much functionality as ordinary tables have (IE they can be indexed, have permissions etc)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant