mariadb/storage/federatedx
Oleg Smirnov 3118132228 MDEV-25080 Allow pushdown of UNIONs to foreign engines
Allow queries of multiple SELECTs combined together with
UNIONs/EXCEPTs/INTERSECTs to be pushed down to foreign engines.
If the foreign engine provides an interface method "create_unit"
and the UNIT is a top-level unit of the SQL query then the server
tries to push the whole SELECT_LEX_UNIT down to the engine for execution.
The engine should perform necessary checks and if they succeed,
execute the query. If the engine is unable to execute the whole unit,
then another attempt is made to push down SELECTs composing the unit
separately using the "create_select" interface method. In this case
the results of separate SELECTs are combined at the server side
thus composing the final result
2023-06-05 20:15:57 +02:00
..
AUTHORS
ChangeLog
CMakeLists.txt
FAQ
federatedx_io.cc
federatedx_io_mysql.cc
federatedx_io_null.cc
federatedx_probes.h
federatedx_pushdown.cc MDEV-25080 Allow pushdown of UNIONs to foreign engines 2023-06-05 20:15:57 +02:00
federatedx_pushdown.h MDEV-25080 Allow pushdown of UNIONs to foreign engines 2023-06-05 20:15:57 +02:00
federatedx_txn.cc
ha_federatedx.cc MDEV-25080 Allow pushdown of UNIONs to foreign engines 2023-06-05 20:15:57 +02:00
ha_federatedx.h MDEV-25080 Allow pushdown of UNIONs to foreign engines 2023-06-05 20:15:57 +02:00
README
README.windows

This is the FederatedX Storage Engine, developed as an external storage engine.

NOTE:

The following is only relevant if you use it for MySQL.  MariaDB already comes
with the latest version of FederatedX.

To install, grab a copy of the mysql source code and run this:

./configure --with-mysql=/path/to/src/mysql-5.x --libdir=/usr/local/lib/mysql/

make install

And then inside of MySQL:

mysql> INSTALL PLUGIN federatedx SONAME 'libfederatedx_engine.so';

mysql> CREATE TABLE `d` (`a` varchar(125), b text, primary key(a)) ENGINE=FEDERATEDX CONNECTION="mysql://root@host/schema/table"

or 

mysql> CREATE TABLE `d` (`a` varchar(125), b text, primary key(a)) ENGINE=FEDERATEDX CONNECTION="server" CHARSET=latin1;

You will probably need to edit the Makefile.am in the src/ tree if you want
to build on anything other then Linux (and the Makefile assumes that the
server was not compiled for debug). The reason for the two possible
configure lines is that libdir is dependent on where MySQL was installed. If
you run the "INSTALL PLUGIN ..." and you get a file not found, check that
your configured this directory correctly.

For Solaris you can enable DTrace probes by adding to configure
--enable-dtrace