Table of Contents

PreparedStatementExecutorValve

Warning

This valve is blocking - this may hurt throughput and cause performance issues since other pipes won't be able to execute while this valve is waiting on a long-running operation in the same instance of the pipes module, for example due to a network request, disk access or similar. Try to limit the usage of blocking valves, try to ensure that they are fast to execute, and if needed, consider deploying multiple instances of the pipes module.

Note

Valve for executing JDBC/SQL prepared statements.

If no items exist in the Current Item Set (CIS), the valve will execute the configured statement and populate the CIS with the result set (if any). If items exist in CIS the valve operates on them and will execute the statement on all items surviving the common item filtering rules.

When transforming the statement result to Items, the first column in the result set is used as id. Make sure your statement returns the columns in the correct order.

Properties

Name Description Default value Mandatory Supports property expansion
connection_ref Id of connection to use. Must be of type 'JDBC' Yes No
statement The statement to execute Yes No
attributes List of attributes (columns) to extract from result set. If not specified all columns from result set will be added to the target item (and name from result set will be used). No No
binary_attrs List of attributes that should be treated as binary No No

Example Configuration

{
        "name": "PreparedStatementExecutorValve",
        "config": { 
              "connection_ref":"cff2ddff-9585-47c5-9286-2bee2b731197",
              "statement":"SELECT uid,email FROM Users where uid = {{request.User-Name}} and password={{request.User-Password}}",
              "attributes" : "uid,email"
        }
}

In the example above, the select statement will query the database for uid and email. These values will then be stored as properties on the current item.

NOTE: Observe that no apostrophes (') should be used within the statement.