SAP HANA - Execute

On this Page

Snap type

Write


Description

This Snap allows you to execute arbitrary SQL.

This Snap works only with single queries.

You can drop your database with it, so be careful.

Valid JSON paths that are defined in the where clause for queries/statements will be substituted with values from an incoming document. Documents will be written to the error view if the document is missing a value to be substituted into the query/statement. 

If a SELECT query is executed, the query's results are merged into the incoming document and any existing keys will have their values overwritten. On the other hand, the original document is written if there are no results from the query.


Expected upstream Snaps:  The dynamic variables used in the execute query can be defined by providing values upstream. The document generator Snaps like JSON Generator can be used in upstream.
Expected downstream Snaps: The Snap will output one document for every record retrieved, hence any document processing Snap can be used downstream.

The SAP HANA Execute Snap is for simple DML (SELECT, INSERT, UPDATE, DELETE) type statements. For the comprehensive scripting functionality offered by the various databases, users should use stored procedure functionality offered by their chosen database in the Stored Procedure Snap.
Prerequisites

[None]


Support and limitations

Works in Ultra Tasks.

Behavior Change

  • In 4.26, when the stored procedures were called using the Database Execute Snaps, the queries were treated as write queries instead of read queries. So the output displayed message and status keys after executing the stored procedure.
    In 4.27, all the Database Execute Snaps run stored procedures correctly, that is, the queries are treated as read queries. The output now displays message key, and OUT params of the procedure (if any). The status key is not displayed.

  • If the stored procedure has no OUT parameters then only the message key is displayed with value success.

If you have any existing Pipelines that are mapped with status key or previous description then those Pipelines will fail. So, you might need to revisit your Pipeline design.

Account

This Snap uses account references created on the Accounts page of SnapLogic Manager to handle access to this endpoint. See Configuring SAP HANA Accounts for information on setting up this type of account.


Views
InputThis Snap has at most one document input view. If the input view is defined, then the where clause can substitute incoming values for a given expression.
OutputThis Snap has at most one document output view. If an output view is available and an update/insert/merge/delete statement was executed, then the original document that was used to create the statement will be output with the status of the statement executed.
Error

This Snap has at most one document error view and produces zero or more documents in the view.

Database write Snaps output all records of a batch (as configured in your account settings) to the error view if the write fails during batch processing.

Settings

Label*


Specify the name for the Snap. You can modify this to be more specific, especially if you have more than one of the same Snap in your Pipeline.

SQL statement
Required*


Specify the SQL statement to execute on the server. 

Scenarios to successfully execute your SQL statements

Scenario 1: Executing SQL statements without expressions

If the expression toggle of the SQL statement field is not selected:  

  • The SQL statement must not be within quotes. 
  • The $<variable_name> parts of the SQL statement are expressions. In the below example, $id and $book.

Examples:

Additionally, the JSON path is allowed only in the WHERE clause. If the SQL statement starts with SELECT (case-insensitive), the Snap regards it as a select-type query and executes once per input document. If not, it regards it as write-type query and executes in batch mode.

Scenario 2: Executing SQL queries with expressions 

If the expression toggle of the SQL statement field is selected: 

  • The SQL statement must be within quotes. 
  • The + $<variable_name> + parts of the SQL statement are expressions, and must not be within quotes. In the below example, $tablename.
  • The $<variable_name> parts of the SQL statement are bind parameter, and must be within quotes. In the below example, $id and $book.



 Table name and column names must not be provided as bind parameters. Only values can be provided as bind parameters.


Examples:


  • "EMPNO=$EMPNO and ENAME=$EMPNAME"

  • "emp='" + $emp + "'"

  • "EMPNO=" + $EMPNO + " and ENAME='" + $EMPNAME+ "'"

We recommend you to add a single query in the SQL Statement field.

Known Issue

When the SQL statement property is an expression, the pipeline parameters are shown in the suggest, but not the input schema.

  • The non-expression form uses bind parameters, so it is much faster than executing N arbitrary SQL expressions. 
  • Using expressions that join strings together to create SQL queries or conditions has a potential SQL injection risk and hence unsafe. Ensure that you understand all implications and risks involved before using concatenation of strings with '=' Expression enabled.
  • The '$' sign and identifier characters, such as double quotes (“), single quotes ('), or back quotes (`), are reserved characters and should not be used in comments or for purposes other than their originally intended purpose.

Single quotes in values must be escaped

Any relational database (RDBMS) treats single quotes (') as special symbols. So, single quotes in the data or values passed through a DML query may cause the Snap to fail when the query is executed. Ensure that you pass two consecutive single quotes in place of one within these values to escape the single quote through these queries.

For example:

If String To pass this valueUse
Has no single quotes
Schaum Series
'Schaum Series'
Contains single quotes
O'Reilly's Publication
'O''Reilly''s Publication'

Default Value: [None]

Query type

Select the type of query for your SQL statement (Read or Write).

When Auto is selected, the Snap tries to determine the query type automatically.
If the execution result of the query is not as expected, you can change the query type to Read or Write.

Default Value: Auto
Example: Read

Pass through


Select this checkbox to pass the input document to the output view under the key 'original'. This property applies only to the Execute Snaps with SELECT statement.

Default Value: Selected


Ignore empty result


Select this checkbox to ignore empty result; no document will be written to the output view when a SELECT operation does not produce any result.
If you deselect this checkbox and select the Pass through checkbox, the input document will be passed through to the output view.

Default Value: Not selected


Auto commit

Select one of the options for this property to override the state of the Auto commit property on the account. The Auto commit at the Snap-level has three values: TrueFalse, and Use account setting. The expected functionality for these modes are:

  •  True - The Snap will execute with auto-commit enabled regardless of the value set for Auto commit in the Account used by the Snap.
  •  False - The Snap will execute with auto-commit disabled regardless of the value set for Auto commit in the Account used by the Snap.
  • Use account setting - The Snap will execute with Auto commit property value inherited by the Account used by the Snap.

Default Value: Use account setting

'Auto commit' may be enabled for certain use cases if PostgreSQL jdbc driver is used in either Redshift, PostgreSQL or generic JDBC Snap. But the JDBC driver may cause out of memory issues when Select statements are executed. In those cases, “Auto commit" in Snap property should be set to ‘False’ and the Fetch size in the “Account setting" can be increased for optimal performance.

Behavior of DML Queries in Database Execute Snap when auto-commit is false

DDL queries used in the Database Execute Snap will be committed by the Database itself, regardless of the Auto-commit setting.
When Auto commit is set to false for the DML queries, the commit is called at the end of the Snap's execution.
The Auto commit needs to be true in a scenario where the downstream Snap does depend on the data processed on an Upstream Database Execute Snap containing a DML query.
When the Auto commit is set to the Use account setting on the Snap, the account level commit needs to be enabled.

Number of retries

Specify the maximum number of retry attempts the Snap must make in case there is a network failure and is unable to read the target file. The request is terminated if the attempts do not result in a response.

  • If the Number of retries value is set to 0 (the default value), the retry option is disabled, and the Snap does not initiate a retry. The pipeline will not attempt to retry the operation in case of a failure—any failure encountered during the database operation will immediately result in the pipeline failing without any retry attempts to recover from the errors.

  • If the Number of retries value is greater than 0, the Snap initiates a download of the target file into a temporary local file. If any error occurs during the download, the Snap waits for the time specified in the Retry interval and then attempts to download the file again from the beginning. After the download is successful, the Snap streams the data from the temporary file to the downstream pipeline. All temporary local files are deleted when they are no longer needed.

Ensure that the local drive has sufficient free disk space to store the temporary local file.

Default Value: 0
Example: 3

Retry interval (seconds)

Specify the time interval between two successive retry requests. A retry happens only when the previous attempt resulted in an exception. 

Default Value: 1
Example: 10

Snap execution

Select one of the three modes in which the Snap executes. Available options are:

  • Validate & Execute: Performs limited execution of the Snap, and generates a data preview during Pipeline validation. Subsequently, performs full execution of the Snap (unlimited records) during Pipeline runtime.
  • Execute only: Performs full execution of the Snap during Pipeline execution without generating preview data.
  • Disabled: Disables the Snap and all Snaps that are downstream from it.


Examples


In this example, we have a table named USER that stores user details. It has 3 columns: NAME, AGE and CITY. We will execute the query and retrieve users with age 60 with this pipeline. 

 

We need to provide the query used to pull the data from USER table in SQL statement property. We will provide dynamic variable values from upstream Snap JSON Generator.

Sample output looks like below:

Snap Pack History

 Click to view/expand
Release Snap Pack VersionDateType  Updates

August 2024

main27765

 

Stable

Updated and certified against the current Snaplogic Platform release.

May 2024437patches26690 Latest

Fixed an issue in the SAP HANA Snap Pack where the downstream Snaps did not support the data type appropriately.

May 2024main26341 StableUpdated the Delete Condition (Truncates a Table if empty) field in the SAP HANA - Delete Snap to Delete condition (deletes all records from a table if left blank) to indicate that all entries will be deleted from the table when this field is blank, but no truncate operation is performed.

February 2024

main25112

 

Stable

Updated and certified against the current SnapLogic Platform release.

November 2023main23721 StableUpdated and certified against the current SnapLogic Platform release.

August 2023

main22460

 


Stable

The SAP HANA - Execute Snap now includes a new Query type field. When Auto is selected, the Snap tries to determine the query type automatically.

May 2023

main21015 

Stable

Upgraded with the latest SnapLogic Platform release.

February 2023main19844 StableUpgraded with the latest SnapLogic Platform release.
November 2022main18944 Stable

The SAP HANA Insert Snap now creates the target table only from the table metadata of the second input view when the following conditions are met:

  • The Create table if not present checkbox is selected.

  • The target table does not exist.

  • The table metadata is provided in the second input view.

October 2022

430patches18852

 Latest

SAP HANA Snaps now properly handle lineage when used in Ultra Pipelines.

August 2022main17386 

Stable

Upgraded with the latest SnapLogic Platform release.

4.29

main15993

 

Stable

Upgraded with the latest SnapLogic Platform release.

4.28main14627 StableUpdated the label for Delete Condition to Delete Condition (Truncates Table if empty) in the SAP HANA Delete Snap
4.27main12833 Stable

Enhanced the SAP HANA - Execute Snap to invoke stored procedures.

4.26main11181 StableUpgraded with the latest SnapLogic Platform release.
4.25main9554
 
StableUpgraded with the latest SnapLogic Platform release.
4.24main8556
Stable
  • Enhanced the SAP HANA - Select Snap to return only the selected output fields or columns in the output schema (second output view) using the Fetch Output Fields In Schema check box. If the Output Fields field is empty all the columns are visible.
  • Enhanced the SAP HANA - Stored Procedure to accept parameters from input documents by column keys. If the values are empty, the parameters are populated based on the column keys for easier mapping in the upstream Mapper Snap.
4.23 Patch423patches7548 Latest

Fixed the batch size issue in SAP HANA - Upsert Snap by using a prepare statement when sending the batch request.

4.23main7430
 
StableUpgraded with the latest SnapLogic Platform release.
4.22 Patch422patches6940 Latest

Fixed the stored procedure name conflict issue in the SAP HANA - Stored Procedure Snap, when the stored procedure exists in multiple schemas, by parsing each procedure name.

4.22main6403
 
StableUpgraded with the latest SnapLogic Platform release.
4.21 Patch421patches6272 Latest

Fixed the issue where Snowflake SCD2 Snap generates two output documents despite no changes to Cause-historization fields with DATE, TIME and TIMESTAMP Snowflake data types, and with Ignore unchanged rows field selected.

4.21 Patch

421patches6144 Latest

Fixed the following issues with DB Snaps:

  • The connection thread waits indefinitely causing the subsequent connection requests to become unresponsive.
  • Connection leaks occur during Pipeline execution.
4.21snapsmrc542

 

StableUpgraded with the latest SnapLogic Platform release.
4.20snapsmrc535
 
Stable

Reverted the SAP/HANA Snap Pack to the stable version snapsmrc535.

4.19 Patch db/saphana8411 LatestFixed an issue with the SAP HANA - Update Snap wherein the Snap is unable to perform operations when:
  • An expression is used in the Update condition property.
  • Input data contain the character '?'.
4.19snaprsmrc528
 
StableUpgraded with the latest SnapLogic Platform release.
4.18snapsmrc523
 
StableUpgraded with the latest SnapLogic Platform release.
4.17ALL7402
 
Latest

Pushed automatic rebuild of the latest version of each Snap Pack to SnapLogic UAT and Elastic servers.

4.17snapsmrc515
 
Latest
  • Fixed an issue with the SAP HANA Execute Snap wherein the Snap would send the input document to the output view even if the Pass through field is not selected in the Snap configuration. With this fix, the Snap sends the input document to the output view, under the key original, only if you select the Pass through field.
  • Added the Snap Execution field to all Standard-mode Snaps. In some Snaps, this field replaces the existing Execute during preview check box.
4.16 Patch db/saphana7062 Latest

Fixed an issue in SAP HANA Update and Insert Snaps wherein time data type was not getting passed if a table name and column name were similar in multiple schemas.

4.16 Patch db/saphana7040

 

Latest

Fixed an issue with the SAP HANA - Delete Snap wherein the Snap was unable to delete a data if the delete condition was not selected or if the condition was a static value.

4.16snapsmrc508
 
StableUpgraded with the latest SnapLogic Platform release.
4.15snapsmrc500
 
StableUpgraded with the latest SnapLogic Platform release.
4.14snapsmrc490
 
StableUpgraded with the latest SnapLogic Platform release.
4.13

snapsmrc486

 
StableUpgraded with the latest SnapLogic Platform release.
4.12

snapsmrc480

 
StableUpgraded with the latest SnapLogic Platform release.
4.11snapsmrc465
 
StableUpgraded with the latest SnapLogic Platform release.
4.10

snapsmrc414

 
Stable

Added Auto commit property to the Select and Execute Snaps at the Snap level to support overriding of the Auto commit property at the Account level.

4.9.0 Patchsaphana3074 Latest

Fixed an issue regarding connection not closed after login failure; Expose autocommit for "Select into" statement in PostgreSQL Execute Snap and Redshift Execute Snap

4.9snapsmrc405
 
StableUpgraded with the latest SnapLogic Platform release.

4.8.0 Patch

saphana2759 Latest

Potential fix for JDBC deadlock issue.

4.8.0 Patch

saphana2714 Latest

Fixed SAP HANA Snap Pack rendering dates that are one hour off from the date returned by database query for non-UTC Snaplexes.

4.8

snapsmrc398

 
Stable
  • Info tab added to accounts.
  • Database accounts now invalidate connection pools if account properties are modified and login attempts fail.

4.7.0 Patch

saphana2202 Latest

Fixed an issue for database Select Snaps regarding Limit rows not supporting an empty string from a pipeline parameter.

4.7

snapsmrc382

 
StableUpgraded with the latest SnapLogic Platform release.
4.6snapsmrc362
 
StableUpgraded with the latest SnapLogic Platform release.
4.5.1

snapsmrc344

 
Latest

Fixed an error in a tooltip for SAP HANA Upsert.

4.5

snapsmrc344

 Stable
  • NEW! SAP HANA - Table List: This Snap outputs a list of tables in a database.
  • Output fields property added to SAP HANA Select Snap.
  • Resolved an issue in SAP HANA Write Snap to disallow insertion of unsupported data types as NULLs in HANA tables.
  • Resolved an issue in SAP HANA Execute Snap that occurred when errors were reported even when table creation was successful.
4.22NANANA

Ignored empty result added to Execute and Select Snaps. The option will not any document to the output view for select statements.

NANA NA

Addressed the following issues:

  • Mismatched datatype values are inserted as NULLs
  • JSON paths in WHERE clauses should be processed as bind values after the expression is evaluated.
NANA NA
  • Addressed the following issue: When schema name entered in lower case- click on suggest for table name- says - no tables found
  • Dynamic DB queries now supported in the Execute Snap.
  • The SQL statement property now can be set as an expression property. When it is an expression, it will be evaluated with each input document and one SQL statement per each input document will be executed.
  • Known issue: When the SQL statement property is an expression, the pipeline parameters are shown in the suggest, but not the input schema.
  • With the SQL statement property set as an expression, the Snap can be exposed to SQL injection. Please use this feature with caution.
  • SAP Hana Insert string into number no longer routes to error view - just inserts null
NANA NA
  • SAP HANA Stored Procedure
  • Insert: Issue resolved with failing to write a string "NaN" to a string datatype column in HANA.

  • Select: Issue resolved with invalid table name.