Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Localtabgroup
Localtab
titleh2
Code Block
languagexml
    <database name = "h2.*" minVersion = "1.0" maxVersion = "10.0">
        <recordCountSupported>false</recordCountSupported>
        <paginationSupported>true</paginationSupported>
        <paginationMode>MODE1</paginationMode>
        <recordTableCheckQuery>SELECT 1 FROM {{TABLE_NAME}} LIMIT 1</recordTableCheckQuery>
        <recordCountQuery>SELECT COUNT(*) FROM {{TABLE_NAME}} WHERE timestamp &gt;= ? AND timestamp &lt; ?</recordCountQuery>
        <recordDeletionQuery>DELETE FROM {{TABLE_NAME}} WHERE timestamp &gt;= ? AND timestamp &lt; ?</recordDeletionQuery>
        <recordDeletionWithIdsQuery>DELETE FROM {{TABLE_NAME}} WHERE record_id IN ({{RECORD_IDS}})</recordDeletionWithIdsQuery>
        <recordMergeQuery>MERGE INTO {{TABLE_NAME}} (partition_key, timestamp, data, record_id) KEY (record_id) VALUES (?, ?, ?, ?)</recordMergeQuery>
        <recordRetrievalQuery>SELECT record_id, timestamp, data FROM {{TABLE_NAME}} WHERE partition_key &gt;= ? and partition_key &lt; ? AND timestamp &gt;= ? AND timestamp &lt; ? LIMIT ?,?</recordRetrievalQuery>
        <recordRetrievalWithIdsQuery>SELECT record_id, timestamp, data FROM {{TABLE_NAME}} WHERE record_id IN ({{RECORD_IDS}})</recordRetrievalWithIdsQuery>
        <recordTableDeleteQueries>
            <query>DROP INDEX IF EXISTS {{TABLE_NAME}}_TIMESTAMP</query>
            <query>DROP INDEX IF EXISTS {{TABLE_NAME}}_PARTITION_KEY</query>
            <query>DROP TABLE IF EXISTS {{TABLE_NAME}}</query>
        </recordTableDeleteQueries>
        <recordTableInitQueries>
            <query>CREATE TABLE {{TABLE_NAME}} (record_id VARCHAR(50), timestamp BIGINT, data BINARY, partition_key INT, PRIMARY KEY(record_id))</query>
            <query>CREATE INDEX {{TABLE_NAME}}_TIMESTAMP ON {{TABLE_NAME}} (timestamp)</query>
            <query>CREATE INDEX {{TABLE_NAME}}_PARTITION_KEY ON {{TABLE_NAME}} (partition_key)</query>
        </recordTableInitQueries>
    </database>
Localtab
titlemysql - large_dataset_optimized category
Code Block
languagexml
<database name = "mysql" category <fsDataChunkSize>10240</fsDataChunkSize>
= "large_dataset_optimized">
       <fsDeletePathQuery>DELETE FROM AN_FS_PATH WHERE path = ?</fsDeletePathQuery><recordCountSupported>false</recordCountSupported>
        <paginationSupported>true</paginationSupported>
    <fsDeleteDataQuery>DELETE FROM AN_FS_DATA WHERE path<paginationMode>MODE1</paginationMode>
= ?</fsDeleteDataQuery>       <recordTableCheckQuery>SELECT 1 <fsUpdateDataPathQuery>UPDATEFROM AN_FS_DATA SET path = ? WHERE path = ?</fsUpdateDataPathQuery>
        <fsFileLengthRetrievalQuery>SELECT length FROM AN_FS_PATH WHERE path = ?</fsFileLengthRetrievalQuery>{{TABLE_NAME}} LIMIT 1</recordTableCheckQuery>
        <recordCountQuery>SELECT COUNT(*) FROM {{TABLE_NAME}} WHERE timestamp &gt;= ? AND timestamp &lt; ?</recordCountQuery>
        <fsInsertPathQuery>INSERT<recordDeletionQuery>DELETE INTOFROM AN_FS_PATH (path,is_directory,length,parent_path) VALUES (?,?,?,?)</fsInsertPathQuery>{{TABLE_NAME}} WHERE timestamp &gt;= ? AND timestamp &lt; ?</recordDeletionQuery>
        <fsListFilesQuery>SELECT<recordDeletionWithIdsQuery>DELETE path FROM AN_FS_PATH{{TABLE_NAME}} WHERE parentrecord_pathid = ?IN ({{RECORD_IDS}})</fsListFilesQuery>recordDeletionWithIdsQuery>
        <fsPathRetrievalQuery>SELECT<recordMergeQuery>INSERT * FROM AN_FS_PATH WHERE path = ?</fsPathRetrievalQuery>
        <fsReadDataChunkQuery>SELECT data FROM AN_FS_DATA WHERE path = ? AND sequence = ?</fsReadDataChunkQuery>INTO {{TABLE_NAME}} (partition_key, timestamp, data, record_id) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE partition_key=VALUES(partition_key), timestamp=VALUES(timestamp), data=VALUES(data)</recordMergeQuery>
        <fsSetFileLengthQuery>UPDATE AN_FS_PATH SET length = ? WHERE path = ?</fsSetFileLengthQuery><forwardOnlyReadEnabled>true</forwardOnlyReadEnabled>
        <fetchSize>-2147483648</fetchSize>        
<fsTableInitQueries>        <recordRetrievalQuery>SELECT record_id, timestamp, data FROM <query>CREATE {{TABLE AN_FS_PATH (path VARCHAR(256), is_directory BOOLEAN, length BIGINT, parent_path VARCHAR(256), PRIMARY KEY(path), FOREIGN KEY (parent_path) REFERENCES AN_FS_PATH(path))</query>_NAME}} WHERE partition_key &gt;= ? and partition_key &lt; ? AND timestamp &gt;= ? AND timestamp &lt; ? LIMIT ?,?</recordRetrievalQuery>
        <recordRetrievalWithIdsQuery>SELECT record_id, timestamp, data <query>CREATEFROM {{TABLE AN_FS_DATA (path VARCHAR(256), sequence BIGINT, data BINARY, PRIMARY KEY (path,sequence), FOREIGN KEY (path) REFERENCES AN_FS_PATH(path))_NAME}} WHERE record_id IN ({{RECORD_IDS}})</recordRetrievalWithIdsQuery>
        <recordTableDeleteQueries>
            <query>DROP INDEX {{TABLE_NAME}}_PARTITION_KEY ON {{TABLE_NAME}}</query>
            <query>CREATE<query>DROP INDEX index_parent_id{{TABLE_NAME}}_TIMESTAMP ON AN_FS_PATH(parent_path){{TABLE_NAME}}</query>
        </fsTableInitQueries>    <query>DROP TABLE IF EXISTS  <fsTablesCheckQuery>SELECT path FROM AN_FS_PATH WHERE path = '/'</fsTablesCheckQuery>{{TABLE_NAME}}</query>
        </recordTableDeleteQueries>
        <fsMergeDataChunkQuery>MERGE INTO AN_FS_DATA (path,sequence,data) KEY (path,sequence) VALUES (?,?,?)</fsMergeDataChunkQuery>
    </database>
Localtab
titlemysql - large_dataset_optimized category
Code Block
languagexml
<database name = "mysql" category = "large_dataset_optimized">
        <recordCountSupported>false</recordCountSupported><recordTableInitQueries>
            <query>CREATE TABLE {{TABLE_NAME}} (record_id VARCHAR(50), timestamp BIGINT, data LONGBLOB, partition_key INT, PRIMARY KEY(record_id)) ENGINE='MyISAM'</query>
            <query>CREATE INDEX {{TABLE_NAME}}_TIMESTAMP ON {{TABLE_NAME}} (timestamp)</query>
        <paginationSupported>true</paginationSupported>    <query>CREATE INDEX    <paginationMode>MODE1</paginationMode>
        <recordTableCheckQuery>SELECT 1 FROM {{TABLE_NAME}}_PARTITION_KEY ON {{TABLE_NAME}} LIMIT 1</recordTableCheckQuery>(partition_key)</query>
        <recordCountQuery>SELECT COUNT(*) FROM {{TABLE_NAME}} WHERE timestamp &gt;= ? AND timestamp &lt; ?</recordCountQuery></recordTableInitQueries>
    </database>
Localtab
titlemysql - limited_dataset_optimized category
Code Block
languagexml
    <database name = "mysql" category = "limited_dataset_optimized">
        <recordCountSupported>false</recordCountSupported>
        <recordDeletionQuery>DELETE<paginationSupported>true</paginationSupported>
FROM {{TABLE_NAME}} WHERE timestamp &gt;= ? AND timestamp &lt; ?</recordDeletionQuery> <paginationMode>MODE1</paginationMode>
        <recordTableCheckQuery>SELECT <recordDeletionWithIdsQuery>DELETE1 FROM {{TABLE_NAME}} WHERE record_id IN ({{RECORD_IDS}})</recordDeletionWithIdsQuery>LIMIT 1</recordTableCheckQuery>
        <recordCountQuery>SELECT COUNT(*) FROM {{TABLE_NAME}} WHERE timestamp &gt;= ? AND timestamp &lt; ?</recordCountQuery>
        <recordMergeQuery>INSERT<recordDeletionQuery>DELETE INTOFROM {{TABLE_NAME}} (partition_key,WHERE timestamp, data, record_id) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE partition_key=VALUES(partition_key),  &gt;= ? AND timestamp &lt; ?</recordDeletionQuery>
        <recordDeletionWithIdsQuery>DELETE FROM {{TABLE_NAME}} WHERE record_id IN ({{RECORD_IDS}})</recordDeletionWithIdsQuery>
        <recordMergeQuery>INSERT INTO {{TABLE_NAME}} (partition_key, timestamp, data, record_id) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE partition_key=VALUES(partition_key), timestamp=VALUES(timestamp), data=VALUES(data)</recordMergeQuery>
        <forwardOnlyReadEnabled>true</forwardOnlyReadEnabled>
        <fetchSize>-2147483648</fetchSize>        
        <recordRetrievalQuery>SELECT record_id, timestamp, data FROM {{TABLE_NAME}} WHERE partition_key &gt;= ? and partition_key &lt; ? AND timestamp &gt;= ? AND timestamp &lt; ? LIMIT ?,?</recordRetrievalQuery>
        <recordRetrievalWithIdsQuery>SELECT record_id, timestamp, data FROM {{TABLE_NAME}} WHERE record_id IN ({{RECORD_IDS}})</recordRetrievalWithIdsQuery>
        <recordTableDeleteQueries>
            <query>DROP INDEX {{TABLE_NAME}}_PARTITION_KEY ON {{TABLE_NAME}}</query>
            <query>DROP INDEX {{TABLE_NAME}}_TIMESTAMP ON {{TABLE_NAME}}</query>
            <query>DROP TABLE IF EXISTS {{TABLE_NAME}}</query>
        </recordTableDeleteQueries>
        <recordTableInitQueries>
            <query>CREATE TABLE {{TABLE_NAME}} (record_id VARCHAR(50), timestamp BIGINT, data LONGBLOB, partition_key INT, PRIMARY KEY(record_id)) ENGINE='MyISAMInnoDB'</query>
            <query>CREATE INDEX {{TABLE_NAME}}_TIMESTAMP ON {{TABLE_NAME}} (timestamp)</query>
            <query>CREATE INDEX {{TABLE_NAME}}_PARTITION_KEY ON {{TABLE_NAME}} (partition_key)</query>
        </recordTableInitQueries>
        <fsDataChunkSize>10240</fsDataChunkSize>
</database>

 

 

Localtab
titleoracle
Code Block
languagexml
    <database name = "oracle">
  <fsDeletePathQuery>DELETE FROM AN_FS_PATH WHERE path = ?<<recordCountSupported>false</fsDeletePathQuery>recordCountSupported>
        <paginationSupported>true</paginationSupported>
<fsDeleteDataQuery>DELETE FROM AN_FS_DATA WHERE path = ?</fsDeleteDataQuery>  <paginationMode>MODE2</paginationMode>
      <fsUpdateDataPathQuery>UPDATE AN_FS_DATA SET<recordTableCheckQuery>SELECT path1 = ?FROM {{TABLE_NAME}} WHERE path = ?</fsUpdateDataPathQuery>rownum=1</recordTableCheckQuery>
        <fsFileLengthRetrievalQuery>SELECT length<recordCountQuery>SELECT COUNT(*) FROM AN_FS_PATH{{TABLE_NAME}} WHERE pathtimestamp &gt;= ?</fsFileLengthRetrievalQuery> AND        <fsInsertPathQuery>INSERT INTO AN_FS_PATH (path,is_directory,length,parent_path) VALUES (?,?,?,?)</fsInsertPathQuery>timestamp &lt; ?</recordCountQuery>
        <fsListFilesQuery>SELECT<recordDeletionQuery>DELETE path FROM AN_FS_PATH{{TABLE_NAME}} WHERE parent_path timestamp &gt;= ? AND timestamp &lt; ?</fsListFilesQuery>recordDeletionQuery>
        <fsPathRetrievalQuery>SELECT *<recordDeletionWithIdsQuery>DELETE FROM AN_FS_PATH{{TABLE_NAME}} WHERE pathrecord_id = ?IN ({{RECORD_IDS}})</fsPathRetrievalQuery>recordDeletionWithIdsQuery>
        <fsReadDataChunkQuery>SELECT<recordInsertQuery>INSERT data FROM AN_FS_DATA WHERE path = ? AND sequence = ?</fsReadDataChunkQuery>INTO {{TABLE_NAME}} (partition_key, timestamp, data, record_id) VALUES (?, ?, ?, ?)</recordInsertQuery>
        <fsSetFileLengthQuery>UPDATE<recordUpdateQuery>UPDATE AN_FS_PATH{{TABLE_NAME}} SET lengthpartition_key = ?, WHEREtimestamp path = ?</fsSetFileLengthQuery>, data = ? WHERE record_id = ?</recordUpdateQuery>
 <fsTableInitQueries>       <recordMergeQuery>MERGE INTO {{TABLE_NAME}} dest USING( SELECT <query>CREATE TABLE? AN_FS_PATH (path VARCHAR(256), is_directory BOOLEAN, length BIGINT, parent_path VARCHAR(256), PRIMARY KEY(path)) ENGINE='MyISAM'</query>
            <query>CREATE TABLE AN_FS_DATA (path VARCHAR(256), sequence BIGINT, data LONGBLOB, PRIMARY KEY (path,sequence)) ENGINE='MyISAM'</query>partition_key, ? timestamp, ? data, ? record_id FROM dual) src ON(dest.record_id = src.record_id) WHEN NOT MATCHED THEN INSERT(partition_key, timestamp, data, record_id) VALUES(src.partition_key, src.timestamp, src.data, src.record_id) WHEN MATCHED THEN UPDATE SET dest.partition_key = src.partition_key, dest.timestamp = src.timestamp, dest.data = src.data</recordMergeQuery>
        <recordRetrievalQuery>SELECT record_id, timestamp, data <query>CREATEfrom INDEX index_parent_id ON AN_FS_PATH(parent_path)</query>
        </fsTableInitQueries>
        <fsTablesCheckQuery>SELECT path FROM AN_FS_PATH WHERE path = '/'</fsTablesCheckQuery>(SELECT rownum RNUM, record_id, timestamp, data FROM {{TABLE_NAME}} WHERE partition_key &gt;= ? and partition_key &lt; ? AND timestamp &gt;= ? AND timestamp &lt; ? and rownum &lt;= ?) where RNUM &gt; ?</recordRetrievalQuery>
        <fsMergeDataChunkQuery>INSERT INTO AN_FS_DATA (path,sequence,data) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE data=VALUES(data)</fsMergeDataChunkQuery><recordRetrievalWithIdsQuery>SELECT record_id, timestamp, data FROM {{TABLE_NAME}} WHERE record_id IN ({{RECORD_IDS}})</recordRetrievalWithIdsQuery>
        <recordTableDeleteQueries>
    </database>
Localtab
titlemysql - limited_dataset_optimized category
Code Block
languagexml
    <database name = "mysql" category<query>DROP = "limited_dataset_optimized">INDEX {{TABLE_NAME}}_PARTITION_KEY</query>
        <recordCountSupported>false</recordCountSupported>    <query>DROP     <paginationSupported>true</paginationSupported>INDEX {{TABLE_NAME}}_TIMESTAMP</query>
        <paginationMode>MODE1</paginationMode>    <query>DROP     <recordTableCheckQuery>SELECT 1 FROM TABLE {{TABLE_NAME}}</query>
LIMIT 1</recordTableCheckQuery>       </recordTableDeleteQueries>
 <recordCountQuery>SELECT COUNT(*) FROM {{TABLE_NAME}} WHERE timestamp &gt;= ?<recordTableInitQueries>
AND timestamp &lt; ?</recordCountQuery>         <recordDeletionQuery>DELETE<query>CREATE FROMTABLE {{TABLE_NAME}} WHERE(record_id VARCHAR2(50), timestamp &gt;= ? AND timestamp &lt; ?</recordDeletionQuery>NUMBER(19), data BLOB, partition_key NUMBER(10), PRIMARY KEY(record_id))</query>
            <recordDeletionWithIdsQuery>DELETE<query>CREATE FROMINDEX {{TABLE_NAME}} WHERE record_idTIMESTAMP INON ({{RECORDTABLE_IDSNAME}} (timestamp)</recordDeletionWithIdsQuery>query>
            <query>CREATE  <recordMergeQuery>INSERT INTOINDEX {{TABLE_NAME}}_PARTITION_KEY ON {{TABLE_NAME}} (partition_key, timestamp, data, record_id) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE partition_key=VALUES(partition_key), timestamp=VALUES(timestamp), data=VALUES(data)</recordMergeQuery>)</query>
        </recordTableInitQueries>
    </database>
Localtab
titleMicrosoft SQL Server
Code Block
languagexml
    <database name = "Microsoft SQL Server">
        <recordCountSupported>false</recordCountSupported>
        <forwardOnlyReadEnabled>true<<paginationSupported>true</forwardOnlyReadEnabled>paginationSupported>
        <fetchSize>-2147483648<<paginationMode>MODE2</fetchSize>paginationMode>
        <blobLengthRequired>true</blobLengthRequired>
       <recordRetrievalQuery>SELECT record_id, timestamp, data FROM <recordTableCheckQuery>SELECT TOP 1 1 from {{TABLE_NAME}}</recordTableCheckQuery>
WHERE partition_key        <recordCountQuery>SELECT COUNT(*) FROM {{TABLE_NAME}} WHERE timestamp &gt;= ? andAND partition_keytimestamp &lt; ? AND</recordCountQuery>
        <recordDeletionQuery>DELETE FROM {{TABLE_NAME}} WHERE timestamp &gt;= ? AND timestamp &lt; ? LIMIT ?,?</recordRetrievalQuery>recordDeletionQuery>
        <recordRetrievalWithIdsQuery>SELECT record_id, timestamp, data <recordDeletionWithIdsQuery>DELETE FROM {{TABLE_NAME}} WHERE record_id IN ({{RECORD_IDS}})</recordRetrievalWithIdsQuery>recordDeletionWithIdsQuery>
        <recordTableDeleteQueries>
            <query>DROP INDEX {{TABLE_NAME}}_PARTITION_KEY ON {{TABLE_NAME}}</query>
            <query>DROP INDEX {{TABLE_NAME}}_TIMESTAMP ON {{TABLE_NAME}}</query>
     <!--recordMergeQuery>MERGE {{TABLE_NAME}} AS dest USING (SELECT ?, ?, ?, ?) AS src (partition_key, timestamp, data, record_id) ON (dest.record_id = src.record_id) WHEN MATCHED THEN UPDATE SET partition_key = src.partition_key, timestamp = src.timestamp, data = src.data WHEN NOT MATCHED THEN INSERT(partition_key, timestamp, data, record_id) VALUES (src.partition_key, src.timestamp, src.data, src.record_id);</recordMergeQuery-->
      <query>DROP TABLE IF<recordInsertQuery>INSERT EXISTSINTO {{TABLE_NAME}}</query>
        </recordTableDeleteQueries> (partition_key, timestamp, data, record_id) VALUES (?, ?, ?, ?)</recordInsertQuery>
        <recordTableInitQueries>
            <query>CREATE TABLE <recordUpdateQuery>UPDATE {{TABLE_NAME}} (record_id VARCHAR(50)SET partition_key = ?, timestamp = BIGINT?, data LONGBLOB, partition_key INT, PRIMARY KEY(= ? WHERE record_id)) ENGINE='InnoDB' ?</query>recordUpdateQuery>
        <recordRetrievalQuery>SELECT record_id, timestamp, data  <query>CREATE INDEX {{TABLE_NAME}}_TIMESTAMP ONFROM (SELECT ROW_NUMBER() OVER(ORDER BY record_id) AS rownumber, record_id, timestamp, data FROM {{TABLE_NAME}} (timestamp)</query>
            <query>CREATE INDEX {{TABLE_NAME}}_PARTITION_KEY ON {{TABLE_NAME}} (partition_key)</query>
        </recordTableInitQueries>WHERE partition_key &gt;= ? and partition_key &lt; ? AND timestamp &gt;= ? AND timestamp &lt; ?) AS A WHERE A.rownumber &lt;= ? AND A.rownumber &gt; ?</recordRetrievalQuery>
        <fsDataChunkSize>10240</fsDataChunkSize>
        <fsDeletePathQuery>DELETE FROM AN_FS_PATH WHERE path = ?</fsDeletePathQuery><!--recordRetrievalQuery>SELECT record_id, timestamp, data FROM {{TABLE_NAME}} WHERE timestamp &gt;= ? AND timestamp &lt; ? OFFSET ? ROWS FETCH NEXT ? ROWS ONLY</recordRetrievalQuery-->
         <fsDeleteDataQuery>DELETE<recordRetrievalWithIdsQuery>SELECT record_id, timestamp, data FROM AN_FS_DATA{{TABLE_NAME}} WHERE pathrecord_id = ?IN ({{RECORD_IDS}})</fsDeleteDataQuery>recordRetrievalWithIdsQuery>
        <fsUpdateDataPathQuery>UPDATE<recordTableDeleteQueries>
AN_FS_DATA SET path = ? WHERE path = ?</fsUpdateDataPathQuery>      <query>DROP   <fsFileLengthRetrievalQuery>SELECT length FROM AN_FS_PATH WHERE path = ?</fsFileLengthRetrievalQuery>INDEX {{TABLE_NAME}}_PARTITION_KEY</query>
            <fsInsertPathQuery>INSERT<query>DROP INTOINDEX AN_FS_PATH (path,is_directory,length,parent_path) VALUES (?,?,?,?)</fsInsertPathQuery>{{TABLE_NAME}}_TIMESTAMP</query>
           <fsListFilesQuery>SELECT path<query>DROP FROMTABLE AN_FS_PATH WHERE parent_path = ?</fsListFilesQuery>{{TABLE_NAME}}</query>
        </recordTableDeleteQueries>
        <fsPathRetrievalQuery>SELECT<recordTableInitQueries>
* FROM AN_FS_PATH WHERE path = ?</fsPathRetrievalQuery>           <query>CREATE TABLE {{TABLE_NAME}} (record_id VARCHAR(50), timestamp <fsReadDataChunkQuery>SELECTBIGINT, data FROM AN_FS_DATA WHERE path = ? AND sequence = ?</fsReadDataChunkQuery>VARBINARY(max), partition_key INTEGER, PRIMARY KEY(record_id))</query>
            <query>CREATE <fsSetFileLengthQuery>UPDATEINDEX AN_FS_PATH SET length = ? WHERE path = ?</fsSetFileLengthQuery>{{TABLE_NAME}}_TIMESTAMP ON {{TABLE_NAME}} (timestamp)</query>
        <fsTableInitQueries>    <query>CREATE INDEX {{TABLE_NAME}}_PARTITION_KEY       <query>CREATE TABLE AN_FS_PATH (path VARCHAR(256), is_directory BOOLEAN, length BIGINT, parent_path VARCHAR(256), PRIMARY KEY(path)) ENGINE='InnoDB'</query>
            <query>CREATE TABLE AN_FS_DATA (path VARCHAR(256), sequence BIGINT, data LONGBLOB, PRIMARY KEY (path,sequence)) ENGINE='InnoDB'</query>
  ON {{TABLE_NAME}} (partition_key)</query>
        </recordTableInitQueries>
    </database>
Localtab
titlePostgreSQL
Code Block
languagexml
    <database name = "PostgreSQL">
        <recordCountSupported>false</recordCountSupported>
        <paginationSupported>true</paginationSupported>
        <paginationMode>MODE1</paginationMode>
<query>CREATE INDEX index_parent_id ON AN_FS_PATH(parent_path)</query>    <recordTableCheckQuery>SELECT 1 FROM {{TABLE_NAME}} LIMIT <1</fsTableInitQueries>recordTableCheckQuery>
        <fsTablesCheckQuery>SELECT path<recordCountQuery>SELECT COUNT(*) FROM AN_FS_PATH{{TABLE_NAME}} WHERE pathtimestamp &gt;= '/'</fsTablesCheckQuery> ? AND timestamp &lt; ?</recordCountQuery>
        <fsMergeDataChunkQuery>INSERT<recordDeletionQuery>DELETE INTOFROM AN_FS_DATA (path,sequence,data) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE data=VALUES(data)</fsMergeDataChunkQuery>{{TABLE_NAME}} WHERE timestamp &gt;= ? AND timestamp &lt; ?</recordDeletionQuery>
        <recordDeletionWithIdsQuery>DELETE FROM {{TABLE_NAME}} WHERE </database>

 

 

Localtab
titleoracle
Code Block
languagexml
record_id IN ({{RECORD_IDS}})</recordDeletionWithIdsQuery>
     <database name = "oracle"><recordInsertQuery>INSERT INTO {{TABLE_NAME}} (partition_key, timestamp, data, record_id) VALUES  <recordCountSupported>false</recordCountSupported>(?, ?, ?, ?)</recordInsertQuery>
        <paginationSupported>true</paginationSupported>
        <paginationMode>MODE2</paginationMode>
        <recordTableCheckQuery>SELECT 1 FROM <recordUpdateQuery>UPDATE {{TABLE_NAME}} SET partition_key = ?, timestamp = ?, data = ? WHERE record_id = ?</recordUpdateQuery>
        <!--recordMergeQuery>INSERT INTO {{TABLE_NAME}} WHERE rownum=1</recordTableCheckQuery>
        <recordCountQuery>SELECT COUNT(*) FROM {{TABLE_NAME}} WHERE timestamp &gt;= ? AND timestamp &lt; ?</recordCountQuery>
   (partition_key, timestamp, data, record_id) VALUES (?, ?, ?, ?) ON CONFLICT DO UPDATE partition_key=VALUES(partition_key), timestamp=VALUES(timestamp), data=VALUES(data)</recordMergeQuery-->
        <forwardOnlyReadEnabled>true</forwardOnlyReadEnabled>
    <recordDeletionQuery>DELETE FROM    <fetchSize>1000</fetchSize>
        <recordRetrievalQuery>SELECT record_id, timestamp, data FROM {{TABLE_NAME}} WHERE partition_key &gt;= ? and partition_key &lt; ? AND timestamp &gt;= ? AND timestamp &lt; ? OFFSET ? LIMIT ?</recordDeletionQuery>recordRetrievalQuery>
        <recordRetrievalWithIdsQuery>SELECT record_id, timestamp, <recordDeletionWithIdsQuery>DELETEdata FROM {{TABLE_NAME}} WHERE record_id IN ({{RECORD_IDS}})</recordDeletionWithIdsQuery>recordRetrievalWithIdsQuery>
        <recordTableDeleteQueries>
            <recordInsertQuery>INSERT<query>DROP INTOINDEX {{TABLE_NAME}} (partition_key, timestamp, data, record_id) VALUES (?, ?, ?, ?)</recordInsertQuery>_PARTITION_KEY ON {{TABLE_NAME}}</query>
            <query>DROP <recordUpdateQuery>UPDATEINDEX {{TABLE_NAME}}_TIMESTAMP SETON partition_key = ?, timestamp = ?, data = ? WHERE record_id = ?</recordUpdateQuery>{{TABLE_NAME}}</query>
            <query>DROP TABLE IF <recordMergeQuery>MERGEEXISTS INTO {{TABLE_NAME}}</query>
dest  USING( SELECT  ? partition_key, ? timestamp,</recordTableDeleteQueries>
? data, ? record_id FROM dual) src ON(dest.record_id = src.record_id) WHEN NOT MATCHED THEN INSERT(partition_key, timestamp, data, record_id) VALUES(src.partition_key, src.timestamp, src.data, src.record_id) WHEN MATCHED THEN UPDATE SET dest.partition_key = src.partition_key, dest.timestamp = src.timestamp, dest.data = src.data</recordMergeQuery>
        <recordRetrievalQuery>SELECT record_id, timestamp, data from (SELECT rownum RNUM, record_id, timestamp, data FROM      <recordTableInitQueries>
            <query>CREATE TABLE {{TABLE_NAME}} (record_id VARCHAR(50), timestamp BIGINT, data BYTEA, partition_key INTEGER, PRIMARY KEY(record_id))</query>
            <query>CREATE INDEX {{TABLE_NAME}}_TIMESTAMP ON {{TABLE_NAME}} (timestamp)</query>
            <query>CREATE INDEX {{TABLE_NAME}}_PARTITION_KEY ON {{TABLE_NAME}} WHERE (partition_key &gt;= ? and partition_key &lt; ? AND timestamp &gt;= ? AND timestamp &lt; ? and rownum &lt;= ?) where RNUM &gt; ?</recordRetrievalQuery>)</query>
        </recordTableInitQueries>
    </database>
Localtab
titleDB2.*
Code Block
languagexml
    <database name = "DB2.*">
        <recordCountSupported>false</recordCountSupported>
<recordRetrievalWithIdsQuery>SELECT record_id, timestamp, data FROM {{TABLE_NAME}} WHERE record_id IN ({{RECORD_IDS}})</recordRetrievalWithIdsQuery> <paginationSupported>true</paginationSupported>
        <paginationMode>MODE1</paginationMode>
<recordTableDeleteQueries>        <blobLengthRequired>true</blobLengthRequired>
    <query>DROP INDEX    <recordTableCheckQuery>SELECT 1 FROM {{TABLE_NAME}}_PARTITION_KEY</query>
   FETCH FIRST 1 ROWS ONLY</recordTableCheckQuery>
        <recordCountQuery>SELECT <query>DROP INDEXCOUNT(*) FROM {{TABLE_NAME}}_TIMESTAMP</query>
       WHERE timestamp &gt;= ? AND timestamp &lt; ?</recordCountQuery>
     <query>DROP TABLE   <recordDeletionQuery>DELETE FROM {{TABLE_NAME}}</query> WHERE timestamp &gt;= ? AND timestamp &lt;  ?</recordTableDeleteQueries>recordDeletionQuery>
        <recordTableInitQueries><recordDeletionWithIdsQuery>DELETE             <query>CREATE TABLE FROM {{TABLE_NAME}} WHERE (record_id IN VARCHAR2(50), timestamp NUMBER(19), data BLOB, partition_key NUMBER(10), PRIMARY KEY(record_id))</query>({{RECORD_IDS}})</recordDeletionWithIdsQuery>
        <recordMergeQuery>MERGE INTO   <query>CREATE INDEX {{TABLE_NAME}}_TIMESTAMP AS ON {{TABLE_NAME}} (timestamp)</query>
            <query>CREATE INDEX {{TABLE_NAME}}_PARTITION_KEY ON {{TABLE_NAME}} (partition_key)</query>
        </recordTableInitQueries>
        <fsDataChunkSize>10240</fsDataChunkSize>
        <fsDeletePathQuery>DELETE FROM AN_FS_PATH WHERE path = ?</fsDeletePathQuery>
        <fsDeleteDataQuery>DELETE FROM AN_FS_DATA WHERE path = ?</fsDeleteDataQuery>dest USING (VALUES(?, ?, ?, ?)) AS src (partition_key, timestamp, data, record_id) ON dest.record_id = src.record_id WHEN MATCHED THEN UPDATE SET dest.partition_key = src.partition_key, dest.timestamp = src.timestamp, dest.data = src.data WHEN NOT MATCHED THEN INSERT (partition_key, timestamp, data, record_id) VALUES (src.partition_key, src.timestamp, src.data, src.record_id)</recordMergeQuery>
        <recordInsertQuery>INSERT INTO {{TABLE_NAME}} (partition_key, timestamp, data, record_id) VALUES (?, ?, ?, ?)</recordInsertQuery>
        <fsUpdateDataPathQuery>UPDATE<recordUpdateQuery>UPDATE AN_FS_DATA SET path{{TABLE_NAME}} SET partition_key = ?, timestamp = ?, data = ? WHERE pathrecord_id = ?</fsUpdateDataPathQuery>recordUpdateQuery>
        <fsFileLengthRetrievalQuery>SELECT length<recordRetrievalQuery>SELECT record_id, timestamp, data FROM AN_FS_PATH{{TABLE_NAME}} WHERE path partition_key &gt;= ?</fsFileLengthRetrievalQuery> and partition_key &lt; ? AND timestamp &gt;= ? <fsInsertPathQuery>INSERTAND INTO AN_FS_PATH (path,is_directory,length,parent_path) VALUES (?,?,?,?)</fsInsertPathQuery>timestamp &lt; ? LIMIT ?,?</recordRetrievalQuery>
         <fsListFilesQuery>SELECT path<recordRetrievalWithIdsQuery>SELECT record_id, timestamp, data FROM AN_FS_PATH WHERE parent_path = ?</fsListFilesQuery>{{TABLE_NAME}} WHERE record_id IN ({{RECORD_IDS}})</recordRetrievalWithIdsQuery>
        <fsPathRetrievalQuery>SELECT *<recordTableDeleteQueries>
FROM AN_FS_PATH WHERE path = ?</fsPathRetrievalQuery>        <query>DROP <fsReadDataChunkQuery>SELECT data FROM AN_FS_DATA WHERE path = ? AND sequence = ?</fsReadDataChunkQuery>INDEX {{TABLE_NAME}}_PARTITION_KEY</query>
            <query>DROP    <fsSetFileLengthQuery>UPDATE AN_FS_PATH SET length = ? WHERE path = ?</fsSetFileLengthQuery>INDEX {{TABLE_NAME}}_TIMESTAMP</query>
            <query>DROP TABLE {{TABLE_NAME}}</query>
        </recordTableDeleteQueries>
       <fsTableInitQueries> <recordTableInitQueries>
            <query>CREATE TABLE AN_FS_PATH (path VARCHAR2(256), is_directory NUMBER(1), length NUMBER(19), parent_path VARCHAR2(256){{TABLE_NAME}} (record_id VARCHAR(50) NOT NULL, timestamp BIGINT, data BLOB(2G) NOT LOGGED, partition_key INTEGER, PRIMARY KEY(path), FOREIGN KEY (parent_path) REFERENCES AN_FS_PATH(path))record_id))</query>
            <query>CREATE INDEX {{TABLE_NAME}}_TIMESTAMP ON {{TABLE_NAME}} (timestamp)</query>
            <query>CREATE INDEX TABLE AN_FS_DATA (path VARCHAR2(256), sequence NUMBER(19), data BLOB, PRIMARY KEY (path,sequence), FOREIGN KEY (path) REFERENCES AN_FS_PATH(path))</query>
            <query>CREATE INDEX index_parent_id ON AN_FS_PATH(parent_path)</query>
        </fsTableInitQueries>
        <fsTablesCheckQuery>SELECT path FROM AN_FS_PATH WHERE path = '/'</fsTablesCheckQuery>
        <fsUpdateDataChunkQuery>UPDATE AN_FS_DATA SET data = ? WHERE path = ? AND sequence = ?</fsUpdateDataChunkQuery>
        <fsWriteDataChunkQuery>INSERT INTO AN_FS_DATA (path,sequence,data) VALUES (?,?,?)</fsWriteDataChunkQuery>
        <fsMergeDataChunkQuery>MERGE INTO AN_FS_DATA dest USING( SELECT ? path, ? sequence, ? data FROM dual) src ON(dest.path = src.path AND dest.sequence = src.sequence) WHEN NOT MATCHED THEN INSERT(path, sequence, data) VALUES(src.path, src.sequence, src.data) WHEN MATCHED THEN UPDATE SET dest.data = src.data</fsMergeDataChunkQuery>
    </database>
Localtab
titleMicrosoft SQL Server
Code Block
languagexml
    <database name = "Microsoft SQL Server">
        <recordCountSupported>false</recordCountSupported>
        <paginationSupported>true</paginationSupported>
        <paginationMode>MODE2</paginationMode>
        <blobLengthRequired>true</blobLengthRequired>
        <recordTableCheckQuery>SELECT TOP 1 1 from {{TABLE_NAME}}</recordTableCheckQuery>
        <recordCountQuery>SELECT COUNT(*) FROM {{TABLE_NAME}} WHERE timestamp &gt;= ? AND timestamp &lt; ?</recordCountQuery>
        <recordDeletionQuery>DELETE FROM {{TABLE_NAME}} WHERE timestamp &gt;= ? AND timestamp &lt; ?</recordDeletionQuery>
        <recordDeletionWithIdsQuery>DELETE FROM {{TABLE_NAME}} WHERE record_id IN ({{RECORD_IDS}})</recordDeletionWithIdsQuery>
        <!--recordMergeQuery>MERGE {{TABLE_NAME}} AS dest USING (SELECT ?, ?, ?, ?) AS src (partition_key, timestamp, data, record_id) ON (dest.record_id = src.record_id) WHEN MATCHED THEN UPDATE SET partition_key = src.partition_key, timestamp = src.timestamp, data = src.data WHEN NOT MATCHED THEN INSERT(partition_key, timestamp, data, record_id) VALUES (src.partition_key, src.timestamp, src.data, src.record_id);</recordMergeQuery-->
        <recordInsertQuery>INSERT INTO {{TABLE_NAME}} (partition_key, timestamp, data, record_id) VALUES (?, ?, ?, ?)</recordInsertQuery>
        <recordUpdateQuery>UPDATE {{TABLE_NAME}} SET partition_key = ?, timestamp = ?, data = ? WHERE record_id = ?</recordUpdateQuery>
        <recordRetrievalQuery>SELECT record_id, timestamp, data FROM (SELECT ROW_NUMBER() OVER(ORDER BY record_id) AS rownumber, record_id, timestamp, data FROM {{TABLE_NAME}} WHERE partition_key &gt;= ? and partition_key &lt; ? AND timestamp &gt;= ? AND timestamp &lt; ?) AS A WHERE A.rownumber &lt;= ? AND A.rownumber &gt; ?</recordRetrievalQuery>
        <!--recordRetrievalQuery>SELECT record_id, timestamp, data FROM {{TABLE_NAME}} WHERE timestamp &gt;= ? AND timestamp &lt; ? OFFSET ? ROWS FETCH NEXT ? ROWS ONLY</recordRetrievalQuery-->
        <recordRetrievalWithIdsQuery>SELECT record_id, timestamp, data FROM {{TABLE_NAME}} WHERE record_id IN ({{RECORD_IDS}})</recordRetrievalWithIdsQuery>
        <recordTableDeleteQueries>
            <query>DROP INDEX {{TABLE_NAME}}_PARTITION_KEY</query>
            <query>DROP INDEX {{TABLE_NAME}}_TIMESTAMP</query>
            <query>DROP TABLE {{TABLE_NAME}}</query>
        </recordTableDeleteQueries>
        <recordTableInitQueries>
            <query>CREATE TABLE {{TABLE_NAME}} (record_id VARCHAR(50), timestamp BIGINT, data VARBINARY(max), partition_key INTEGER, PRIMARY KEY(record_id))</query>
            <query>CREATE INDEX {{TABLE_NAME}}_TIMESTAMP ON {{TABLE_NAME}} (timestamp)</query>
            <query>CREATE INDEX {{TABLE_NAME}}_PARTITION_KEY ON {{TABLE_NAME}} (partition_key)</query>
        </recordTableInitQueries>
        <fsDataChunkSize>10240</fsDataChunkSize>
        <fsDeletePathQuery>DELETE FROM AN_FS_PATH WHERE path = ?</fsDeletePathQuery>
        <fsDeleteDataQuery>DELETE FROM AN_FS_DATA WHERE path = ?</fsDeleteDataQuery>
        <fsUpdateDataPathQuery>UPDATE AN_FS_DATA SET path = ? WHERE path = ?</fsUpdateDataPathQuery>
        <fsFileLengthRetrievalQuery>SELECT length FROM AN_FS_PATH WHERE path = ?</fsFileLengthRetrievalQuery>
        <fsInsertPathQuery>INSERT INTO AN_FS_PATH (path,is_directory,length,parent_path) VALUES (?,?,?,?)</fsInsertPathQuery>
        <fsListFilesQuery>SELECT path FROM AN_FS_PATH WHERE parent_path = ?</fsListFilesQuery>
        <fsPathRetrievalQuery>SELECT * FROM AN_FS_PATH WHERE path = ?</fsPathRetrievalQuery>
        <fsReadDataChunkQuery>SELECT data FROM AN_FS_DATA WHERE path = ? AND sequence = ?</fsReadDataChunkQuery>
        <fsSetFileLengthQuery>UPDATE AN_FS_PATH SET length = ? WHERE path = ?</fsSetFileLengthQuery>
        <fsTableInitQueries>
            <query>CREATE TABLE AN_FS_PATH (path VARCHAR(256), is_directory BIT, length BIGINT, parent_path VARCHAR(256), PRIMARY KEY(path), FOREIGN KEY (parent_path) REFERENCES AN_FS_PATH(path))</query>
            <query>CREATE TABLE AN_FS_DATA (path VARCHAR(256), sequence BIGINT, data VARBINARY(max), PRIMARY KEY (path,sequence), FOREIGN KEY (path) REFERENCES AN_FS_PATH(path) ON DELETE CASCADE)</query>
            <query>CREATE INDEX index_parent_id ON AN_FS_PATH(parent_path)</query>
        </fsTableInitQueries>
        <fsTablesCheckQuery>SELECT path FROM AN_FS_PATH WHERE path = '/'</fsTablesCheckQuery>
        <fsUpdateDataChunkQuery>UPDATE AN_FS_DATA SET data = ? WHERE path = ? AND sequence = ?</fsUpdateDataChunkQuery>
        <fsWriteDataChunkQuery>INSERT INTO AN_FS_DATA (path,sequence,data) VALUES (?,?,?)</fsWriteDataChunkQuery>
        <!--fsMergeDataChunkQuery>MERGE AN_FS_DATA AS dest USING (SELECT ?, ?, ?) AS src (path, sequence, data) ON (dest.path = src.path AND dest.sequence = src.sequence) WHEN MATCHED THEN UPDATE SET data = src.data WHEN NOT MATCHED THEN INSERT(path, sequence, data) VALUES (src.path, src.sequence, src.data);</fsMergeDataChunkQuery-->
    </database>
Localtab
titlePostgreSQL
Code Block
languagexml
    <database name = "PostgreSQL">
        <recordCountSupported>false</recordCountSupported>
        <paginationSupported>true</paginationSupported>
        <paginationMode>MODE1</paginationMode>
        <recordTableCheckQuery>SELECT 1 FROM {{TABLE_NAME}} LIMIT 1</recordTableCheckQuery>
        <recordCountQuery>SELECT COUNT(*) FROM {{TABLE_NAME}} WHERE timestamp &gt;= ? AND timestamp &lt; ?</recordCountQuery>
        <recordDeletionQuery>DELETE FROM {{TABLE_NAME}} WHERE timestamp &gt;= ? AND timestamp &lt; ?</recordDeletionQuery>
        <recordDeletionWithIdsQuery>DELETE FROM {{TABLE_NAME}} WHERE record_id IN ({{RECORD_IDS}})</recordDeletionWithIdsQuery>
        <recordInsertQuery>INSERT INTO {{TABLE_NAME}} (partition_key, timestamp, data, record_id) VALUES (?, ?, ?, ?)</recordInsertQuery>
        <recordUpdateQuery>UPDATE {{TABLE_NAME}} SET partition_key = ?, timestamp = ?, data = ? WHERE record_id = ?</recordUpdateQuery>
        <!--recordMergeQuery>INSERT INTO {{TABLE_NAME}} (partition_key, timestamp, data, record_id) VALUES (?, ?, ?, ?) ON CONFLICT DO UPDATE partition_key=VALUES(partition_key), timestamp=VALUES(timestamp), data=VALUES(data)</recordMergeQuery-->
        <forwardOnlyReadEnabled>true</forwardOnlyReadEnabled>
        <fetchSize>1000</fetchSize>
        <recordRetrievalQuery>SELECT record_id, timestamp, data FROM {{TABLE_NAME}} WHERE partition_key &gt;= ? and partition_key &lt; ? AND timestamp &gt;= ? AND timestamp &lt; ? OFFSET ? LIMIT ?</recordRetrievalQuery>
        <recordRetrievalWithIdsQuery>SELECT record_id, timestamp, data FROM {{TABLE_NAME}} WHERE record_id IN ({{RECORD_IDS}})</recordRetrievalWithIdsQuery>
        <recordTableDeleteQueries>
            <query>DROP INDEX {{TABLE_NAME}}_PARTITION_KEY ON {{TABLE_NAME}}</query>
            <query>DROP INDEX {{TABLE_NAME}}_TIMESTAMP ON {{TABLE_NAME}}</query>
            <query>DROP TABLE IF EXISTS {{TABLE_NAME}}</query>
        </recordTableDeleteQueries>
        <recordTableInitQueries>
            <query>CREATE TABLE {{TABLE_NAME}} (record_id VARCHAR(50), timestamp BIGINT, data BYTEA, partition_key INTEGER, PRIMARY KEY(record_id))</query>
            <query>CREATE INDEX {{TABLE_NAME}}_TIMESTAMP ON {{TABLE_NAME}} (timestamp)</query>
            <query>CREATE INDEX {{TABLE_NAME}}_PARTITION_KEY ON {{TABLE_NAME}} (partition_key)</query>
        </recordTableInitQueries>
        <fsDataChunkSize>10240</fsDataChunkSize>
        <fsDeletePathQuery>DELETE FROM AN_FS_PATH WHERE path = ?</fsDeletePathQuery>
        <fsDeleteDataQuery>DELETE FROM AN_FS_DATA WHERE path = ?</fsDeleteDataQuery>
        <fsUpdateDataPathQuery>UPDATE AN_FS_DATA SET path = ? WHERE path = ?</fsUpdateDataPathQuery>
        <fsFileLengthRetrievalQuery>SELECT length FROM AN_FS_PATH WHERE path = ?</fsFileLengthRetrievalQuery>
        <fsInsertPathQuery>INSERT INTO AN_FS_PATH (path,is_directory,length,parent_path) VALUES (?,?,?,?)</fsInsertPathQuery>
        <fsListFilesQuery>SELECT path FROM AN_FS_PATH WHERE parent_path = ?</fsListFilesQuery>
        <fsPathRetrievalQuery>SELECT * FROM AN_FS_PATH WHERE path = ?</fsPathRetrievalQuery>
        <fsReadDataChunkQuery>SELECT data FROM AN_FS_DATA WHERE path = ? AND sequence = ?</fsReadDataChunkQuery>
        <fsSetFileLengthQuery>UPDATE AN_FS_PATH SET length = ? WHERE path = ?</fsSetFileLengthQuery>
        <fsTableInitQueries>
            <query>CREATE TABLE AN_FS_PATH (path VARCHAR(256), is_directory BOOLEAN, length BIGINT, parent_path VARCHAR(256), PRIMARY KEY(path))</query>
            <query>CREATE TABLE AN_FS_DATA (path VARCHAR(256), sequence BIGINT, data BYTEA, PRIMARY KEY (path,sequence))</query>
            <query>CREATE INDEX index_parent_id ON AN_FS_PATH(parent_path)</query>
        </fsTableInitQueries>
        <fsTablesCheckQuery>SELECT path FROM AN_FS_PATH WHERE path = '/'</fsTablesCheckQuery>
        <fsUpdateDataChunkQuery>UPDATE AN_FS_DATA SET data = ? WHERE path = ? AND sequence = ?</fsUpdateDataChunkQuery>
        <fsWriteDataChunkQuery>INSERT INTO AN_FS_DATA (path,sequence,data) VALUES (?,?,?)</fsWriteDataChunkQuery>
        <!--fsMergeDataChunkQuery>INSERT INTO AN_FS_DATA (path,sequence,data) VALUES (?, ?, ?) ON CONFLICT DO UPDATE data=VALUES(data)</fsMergeDataChunkQuery-->
    </database>
Localtab
titleDB2.*
Code Block
languagexml
    <database name = "DB2.*">
        <recordCountSupported>false</recordCountSupported>
        <paginationSupported>true</paginationSupported>
        <paginationMode>MODE1</paginationMode>
        <blobLengthRequired>true</blobLengthRequired>
        <recordTableCheckQuery>SELECT 1 FROM {{TABLE_NAME}} FETCH FIRST 1 ROWS ONLY</recordTableCheckQuery>
        <recordCountQuery>SELECT COUNT(*) FROM {{TABLE_NAME}} WHERE timestamp &gt;= ? AND timestamp &lt; ?</recordCountQuery>
        <recordDeletionQuery>DELETE FROM {{TABLE_NAME}} WHERE timestamp &gt;= ? AND timestamp &lt; ?</recordDeletionQuery>
        <recordDeletionWithIdsQuery>DELETE FROM {{TABLE_NAME}} WHERE record_id IN ({{RECORD_IDS}})</recordDeletionWithIdsQuery>
        <recordMergeQuery>MERGE INTO {{TABLE_NAME}} AS dest USING (VALUES(?, ?, ?, ?)) AS src (partition_key, timestamp, data, record_id) ON dest.record_id = src.record_id WHEN MATCHED THEN UPDATE SET dest.partition_key = src.partition_key, dest.timestamp = src.timestamp, dest.data = src.data WHEN NOT MATCHED THEN INSERT (partition_key, timestamp, data, record_id) VALUES (src.partition_key, src.timestamp, src.data, src.record_id)</recordMergeQuery>
        <recordInsertQuery>INSERT INTO {{TABLE_NAME}} (partition_key, timestamp, data, record_id) VALUES (?, ?, ?, ?)</recordInsertQuery>
        <recordUpdateQuery>UPDATE {{TABLE_NAME}} SET partition_key = ?, timestamp = ?, data = ? WHERE record_id = ?</recordUpdateQuery>
        <recordRetrievalQuery>SELECT record_id, timestamp, data FROM {{TABLE_NAME}} WHERE partition_key &gt;= ? and partition_key &lt; ? AND timestamp &gt;= ? AND timestamp &lt; ? LIMIT ?,?</recordRetrievalQuery>
        <recordRetrievalWithIdsQuery>SELECT record_id, timestamp, data FROM {{TABLE_NAME}} WHERE record_id IN ({{RECORD_IDS}})</recordRetrievalWithIdsQuery>
        <recordTableDeleteQueries>
            <query>DROP INDEX {{TABLE_NAME}}_PARTITION_KEY</query>
            <query>DROP INDEX {{TABLE_NAME}}_TIMESTAMP</query>
            <query>DROP TABLE {{TABLE_NAME}}</query>
        </recordTableDeleteQueries>
        <recordTableInitQueries>
            <query>CREATE TABLE {{TABLE_NAME}} (record_id VARCHAR(50) NOT NULL, timestamp BIGINT, data BLOB(2G) NOT LOGGED, partition_key INTEGER, PRIMARY KEY(record_id))</query>
            <query>CREATE INDEX {{TABLE_NAME}}_TIMESTAMP ON {{TABLE_NAME}} (timestamp)</query>
            <query>CREATE INDEX {{TABLE_NAME}}_PARTITION_KEY ON {{TABLE_NAME}} (partition_key)</query>
        </recordTableInitQueries>
        <fsDataChunkSize>10240</fsDataChunkSize>
        <fsDeletePathQuery>DELETE FROM AN_FS_PATH WHERE path = ?</fsDeletePathQuery>
        <fsDeleteDataQuery>DELETE FROM AN_FS_DATA WHERE path = ?</fsDeleteDataQuery>
        <fsUpdateDataPathQuery>UPDATE AN_FS_DATA SET path = ? WHERE path = ?</fsUpdateDataPathQuery>
        <fsFileLengthRetrievalQuery>SELECT length FROM AN_FS_PATH WHERE path = ?</fsFileLengthRetrievalQuery>
        <fsInsertPathQuery>INSERT INTO AN_FS_PATH (path,is_directory,length,parent_path) VALUES (?,?,?,?)</fsInsertPathQuery>
        <fsListFilesQuery>SELECT path FROM AN_FS_PATH WHERE parent_path = ?</fsListFilesQuery>
        <fsPathRetrievalQuery>SELECT * FROM AN_FS_PATH WHERE path = ?</fsPathRetrievalQuery>
        <fsReadDataChunkQuery>SELECT data FROM AN_FS_DATA WHERE path = ? AND sequence = ?</fsReadDataChunkQuery>
        <fsSetFileLengthQuery>UPDATE AN_FS_PATH SET length = ? WHERE path = ?</fsSetFileLengthQuery>
        <fsTableInitQueries>
            <query>CREATE TABLE AN_FS_PATH (path VARCHAR(256) NOT NULL, is_directory SMALLINT, length BIGINT, parent_path VARCHAR(256), PRIMARY KEY(path))</query>
            <query>CREATE TABLE AN_FS_DATA (path VARCHAR(256) NOT NULL, sequence BIGINT NOT NULL, data BLOB(2G) NOT LOGGED, PRIMARY KEY (path,sequence))</query>
            <query>CREATE INDEX index_parent_id ON AN_FS_PATH(parent_path)</query>
        </fsTableInitQueries>
        <fsTablesCheckQuery>SELECT path FROM AN_FS_PATH WHERE path = '/'</fsTablesCheckQuery>
        <fsUpdateDataChunkQuery>UPDATE AN_FS_DATA SET data = ? WHERE path = ? AND sequence = ?</fsUpdateDataChunkQuery>
        <fsWriteDataChunkQuery>INSERT INTO AN_FS_DATA (path,sequence,data) VALUES (?,?,?)</fsWriteDataChunkQuery>
        <fsMergeDataChunkQuery>MERGE INTO AN_FS_DATA AS dest USING (VALUES(?, ?, ?)) AS src (path, sequence, data) ON (dest.path = src.path AND dest.sequence = src.sequence) WHEN MATCHED THEN UPDATE SET dest.data = src.data WHEN NOT MATCHED THEN INSERT(path, sequence, data) VALUES (src.path, src.sequence, src.data)</fsMergeDataChunkQuery>
    </database>

 

The above configuration properties are described below.

...

database name

...

minVersion

...

maxVersion

...

fsDeleteDataQuery

...

{{TABLE_NAME}}_PARTITION_KEY ON {{TABLE_NAME}} (partition_key)</query>
        </recordTableInitQueries>
    </database>

 

The above configuration properties are described below.

PropertyDescription
database name
The target RDBMS name to which this query template applies, a regular expression can be put here, to give a pattern on to which a database product name can be mapped. For example, DB2 will give different product name strings when running in Windows and Unix based OS environments, so a regular expression like "DB2.*" will match for all DB2 based database server environments.
minVersion
The minumum version of the database server this configuration will match to, this will be of format "majorVersion.minorVersion".
maxVersion
The maximum version of the database server this configuration will match to, this will be of format "majorVersion.minorVersion".
recordCountSupportedThis property specifies whether it is possible to take a count of all the records in the record store.
paginationSupportedThis property specifies whether dividing the output of the record store to manageable chunks is allowed.
paginationModeThis property specifies the pagination mode. Possible values are as follows.
blobLengthRequiredThis property specifies whether a length should be assigned to data blocks saved in the record store/file system or not.
recordCountQueryThe query template to take a count of the records in the record store.
recordDeletionQueryThe query template to delete a record in the record store.
recordDeletionWithIdsQueryThe query template to delete records with specific IDs in the record store.
recordMergeQueryThe query template to merge two rows of data of a table in the record store.
forwardOnlyReadEnabledIf this property is set to true, the cursor can only move forward on the result set when retrieving records from record store.
fetchSizeNumber of rows that should be fetched from the database if more rows are needed on the generated result set when retrieving records from record store.
recordInsertQueryThe query template to insert new rows of data to a table in the record store.
recordUpdateQueryThe query template to modify the existing table rows in the record store.
recordRetrievalQueryThe query template to retrieve a record from the record store.
recordRetrievalWithIdsQueryThe query template to retrieve records with specific IDs from the record store.
recordTableCheckQueryThe query template to check tables in the record store.
recordTableDeleteQueriesThe query template to delete a table in the record store.
recordTableInitQueriesThe query template to initialize the tables in the record store.

Configuring the datasources

...