Skip to main content
Version: v3.x (DDN)

Native Operations SQL Syntax

There are a few requirements for writing valid Hasura DDN Native Operations SQL:

Arguments are defined in double curly braces

Arguments are specified with double curly braces as variables in your statement, like {{id}}, {{name}}, etc. These are placeholders for the actual values.

Arguments as scalar values only

The arguments are not interpolated, but are translated to parameters of parameterized queries (arguments like {{id}} and {{name}} are translated to $1, $2, etc.) and passed as data, and therefore can only be used in place of scalar values, not table names, column names, or other arbitrary SQL.

No quoting of string arguments

Since the arguments are translated to parameters of parameterized queries, they are passed as data and do not need to be quoted. For example, use {{name}} instead of '{{name}}'.

Single statements only

The SQL of a Native Operation should be a single SQL statement that returns a result and should not contain a semicolon at the end, as the SQL is used inside another SQL query.

String value arguments in patterns using concatenation

Since you can't directly interpolate arguments (like variables) into your SQL statements in the same way you might in other contexts, in order to use a string argument inside a pattern, such as in a LIKE predicate, the argument can be concatenated with the relevant pattern parts.

For example:

SELECT * FROM "Artist" WHERE "Name" LIKE '%John%'

can be written as

SELECT * FROM "Artist" WHERE "Name" LIKE '%' || {{name}} || '%'

using the || concatenation operator to concatenate the parts of the pattern with the argument variable.

No "hasura_" prefixed arguments

Argument names that begin with the prefix hasura_ are reserved for internal use.