|
@@ -32,7 +32,8 @@ Daniel-Constantin Mierla
|
|
|
4. Exported Functions
|
|
|
|
|
|
4.1. sql_query(connection, query, result)
|
|
|
- 4.2. sql_result_free(result)
|
|
|
+ 4.2. sql_xquery(connection, query, result)
|
|
|
+ 4.3. sql_result_free(result)
|
|
|
|
|
|
5. Exported pseudo-variables
|
|
|
|
|
@@ -43,8 +44,9 @@ Daniel-Constantin Mierla
|
|
|
1.1. Set sqlcon parameter
|
|
|
1.2. Set sqlres parameter
|
|
|
1.3. sql_query() usage
|
|
|
- 1.4. sql_result_free() usage
|
|
|
- 1.5. $dbr(result=>key) usage
|
|
|
+ 1.4. sql_xquery() usage
|
|
|
+ 1.5. sql_result_free() usage
|
|
|
+ 1.6. $dbr(result=>key) usage
|
|
|
|
|
|
Chapter 1. Admin Guide
|
|
|
|
|
@@ -64,7 +66,8 @@ Chapter 1. Admin Guide
|
|
|
4. Exported Functions
|
|
|
|
|
|
4.1. sql_query(connection, query, result)
|
|
|
- 4.2. sql_result_free(result)
|
|
|
+ 4.2. sql_xquery(connection, query, result)
|
|
|
+ 4.3. sql_result_free(result)
|
|
|
|
|
|
5. Exported pseudo-variables
|
|
|
|
|
@@ -91,6 +94,10 @@ Chapter 1. Admin Guide
|
|
|
[row,column].
|
|
|
* persistence in process space - a result can be used many times in
|
|
|
the same worker process. Query once, use many times.
|
|
|
+ * alternatively, results can be stored in xavps - columns are
|
|
|
+ accessed by their names, rows by xavp index. Xavp's are available
|
|
|
+ during the transactions lifetime and don't need to be destroyed
|
|
|
+ manually.
|
|
|
|
|
|
2. Dependencies
|
|
|
|
|
@@ -153,7 +160,8 @@ modparam("sqlops", "sqlres", "ra")
|
|
|
4. Exported Functions
|
|
|
|
|
|
4.1. sql_query(connection, query, result)
|
|
|
- 4.2. sql_result_free(result)
|
|
|
+ 4.2. sql_xquery(connection, query, result)
|
|
|
+ 4.3. sql_result_free(result)
|
|
|
|
|
|
4.1. sql_query(connection, query, result)
|
|
|
|
|
@@ -164,8 +172,7 @@ modparam("sqlops", "sqlres", "ra")
|
|
|
* result - string name to identify the result. Will be used by
|
|
|
$dbr(...) pseudo-variable to access result attributes.
|
|
|
|
|
|
- This function can be used from REQUEST_ROUTE, FAILURE_ROUTE,
|
|
|
- ONREPLY_ROUTE, BRANCH_ROUTE.
|
|
|
+ This function can be used from ANY_ROUTE.
|
|
|
|
|
|
Example 1.3. sql_query() usage
|
|
|
...
|
|
@@ -176,14 +183,32 @@ xlog("number of rows in table domain: $dbr(ra=>rows)\n");
|
|
|
sql_result_free("ra");
|
|
|
...
|
|
|
|
|
|
-4.2. sql_result_free(result)
|
|
|
+4.2. sql_xquery(connection, query, result)
|
|
|
+
|
|
|
+ Make a SQL query using 'connection' and store data in 'result' xavp.
|
|
|
+ * connection - the name of the connection to be used for query
|
|
|
+ (defined via the “sqlcon” parameter).
|
|
|
+ * query - SQL query string or pseudo-variables containing SQL query.
|
|
|
+ * result - string name to identify the result xavp. Each row will be
|
|
|
+ added to this xavp, each column can be accessed by its name.
|
|
|
+
|
|
|
+ This function can be used from ANY_ROUTE.
|
|
|
+
|
|
|
+ Example 1.4. sql_xquery() usage
|
|
|
+...
|
|
|
+modparam("sqlops","sqlcon","ca=>dbdriver://username:password@dbhost/dbname")
|
|
|
+...
|
|
|
+sql_xquery("ca", "select * from domain", "ra");
|
|
|
+ xlog("first domain: $xavp(ra=>domain) with id: $xavp(ra=>domain_id)\n");
|
|
|
+...
|
|
|
+
|
|
|
+4.3. sql_result_free(result)
|
|
|
|
|
|
Free data in SQL 'result'.
|
|
|
|
|
|
- This function can be used from REQUEST_ROUTE, FAILURE_ROUTE,
|
|
|
- ONREPLY_ROUTE, BRANCH_ROUTE.
|
|
|
+ This function can be used from ANY_ROUTE.
|
|
|
|
|
|
- Example 1.4. sql_result_free() usage
|
|
|
+ Example 1.5. sql_result_free() usage
|
|
|
...
|
|
|
modparam("sqlops","sqlcon","ca=>dbdriver://username:password@dbhost/dbname")
|
|
|
...
|
|
@@ -212,7 +237,7 @@ sql_result_free("ra");
|
|
|
integer.
|
|
|
* colname[N] - return the name of the N-th column in the result set.
|
|
|
|
|
|
- Example 1.5. $dbr(result=>key) usage
|
|
|
+ Example 1.6. $dbr(result=>key) usage
|
|
|
...
|
|
|
modparam("sqlops","sqlcon","ca=>dbdriver://username:password@dbhost/dbname")
|
|
|
...
|
|
@@ -240,3 +265,25 @@ if($dbr(ra=>rows)>0)
|
|
|
}
|
|
|
sql_result_free("ra");
|
|
|
...
|
|
|
+
|
|
|
+
|
|
|
+...
|
|
|
+if (sql_xquery("ca", "select * from domain", "ra") == 1)
|
|
|
+{
|
|
|
+# non-destructive iteration
|
|
|
+ $var(i) = 0;
|
|
|
+ while($xavp(ra[$var(i)]) != $null)
|
|
|
+ {
|
|
|
+ xlog("[id, domain] = [$xavp(ra[$var(i)]=>id), $xavp(ra[$var(i)]=>domain)
|
|
|
+]\n");
|
|
|
+ $var(i) = $var(i) + 1;
|
|
|
+ }
|
|
|
+
|
|
|
+# destructive iteration
|
|
|
+ while($xavp(ra) != $null)
|
|
|
+ {
|
|
|
+ xlog("[id, domain] = [$xavp(ra=>id), $xavp(ra=>domain)]\n");
|
|
|
+ pv_unset("$xavp(ra)");
|
|
|
+ }
|
|
|
+}
|
|
|
+...
|