19.patch
text/x-patch
Filename: 19.patch
Type: text/x-patch
Part: 10
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: unified
| File | + | − |
|---|---|---|
| src/interfaces/ecpg/ecpglib/execute.c | 26 | 14 |
| src/interfaces/ecpg/test/expected/sql-sqlda.stderr | 18 | 18 |
commit 4350c81eb0943173861f1225fbe50cc913ec6a3e
Author: Böszörményi Zoltán <zb@cybertec.at>
Date: Thu Nov 28 11:52:41 2013 +0100
ECPG: Make SQLDA loops go forward. One regression test .stderr changed.
diff --git a/src/interfaces/ecpg/ecpglib/execute.c b/src/interfaces/ecpg/ecpglib/execute.c
index 438d3ab..1fcfebc 100644
--- a/src/interfaces/ecpg/ecpglib/execute.c
+++ b/src/interfaces/ecpg/ecpglib/execute.c
@@ -1551,6 +1551,7 @@ ecpg_process_output(struct statement * stmt, bool clear_result)
{
struct sqlda_compat **_sqlda = (struct sqlda_compat **) var->pointer;
struct sqlda_compat *sqlda = *_sqlda;
+ struct sqlda_compat *sqlda_last;
struct sqlda_compat *sqlda_new;
int i;
@@ -1564,8 +1565,8 @@ ecpg_process_output(struct statement * stmt, bool clear_result)
free(sqlda);
sqlda = sqlda_new;
}
- *_sqlda = sqlda = sqlda_new = NULL;
- for (i = ntuples - 1; i >= 0; i--)
+ *_sqlda = sqlda = sqlda_last = sqlda_new = NULL;
+ for (i = 0; i < ntuples; i++)
{
/*
* Build a new sqlda structure. Note that only
@@ -1592,14 +1593,19 @@ ecpg_process_output(struct statement * stmt, bool clear_result)
{
ecpg_log("ecpg_process_output on line %d: new sqlda was built\n", stmt->lineno);
- *_sqlda = sqlda_new;
+ if (sqlda_last)
+ {
+ sqlda_last->desc_next = sqlda_new;
+ sqlda_last = sqlda_new;
+ }
+ else
+ {
+ *_sqlda = sqlda = sqlda_last = sqlda_new;
+ }
- ecpg_set_compat_sqlda(stmt->lineno, _sqlda, stmt->results, i, stmt->compat);
+ ecpg_set_compat_sqlda(stmt->lineno, &sqlda_new, stmt->results, i, stmt->compat);
ecpg_log("ecpg_process_output on line %d: putting result (1 tuple %d fields) into sqlda descriptor\n",
stmt->lineno, PQnfields(stmt->results));
-
- sqlda_new->desc_next = sqlda;
- sqlda = sqlda_new;
}
}
}
@@ -1607,6 +1613,7 @@ ecpg_process_output(struct statement * stmt, bool clear_result)
{
struct sqlda_struct **_sqlda = (struct sqlda_struct **) var->pointer;
struct sqlda_struct *sqlda = *_sqlda;
+ struct sqlda_struct *sqlda_last;
struct sqlda_struct *sqlda_new;
int i;
@@ -1620,8 +1627,8 @@ ecpg_process_output(struct statement * stmt, bool clear_result)
free(sqlda);
sqlda = sqlda_new;
}
- *_sqlda = sqlda = sqlda_new = NULL;
- for (i = ntuples - 1; i >= 0; i--)
+ *_sqlda = sqlda = sqlda_last = sqlda_new = NULL;
+ for (i = 0; i < ntuples; i++)
{
/*
* Build a new sqlda structure. Note that only
@@ -1648,14 +1655,19 @@ ecpg_process_output(struct statement * stmt, bool clear_result)
{
ecpg_log("ecpg_process_output on line %d: new sqlda was built\n", stmt->lineno);
- *_sqlda = sqlda_new;
+ if (sqlda_last)
+ {
+ sqlda_last->desc_next = sqlda_new;
+ sqlda_last = sqlda_new;
+ }
+ else
+ {
+ *_sqlda = sqlda = sqlda_last = sqlda_new;
+ }
- ecpg_set_native_sqlda(stmt->lineno, _sqlda, stmt->results, i, stmt->compat);
+ ecpg_set_native_sqlda(stmt->lineno, &sqlda_new, stmt->results, i, stmt->compat);
ecpg_log("ecpg_process_output on line %d: putting result (1 tuple %d fields) into sqlda descriptor\n",
stmt->lineno, PQnfields(stmt->results));
-
- sqlda_new->desc_next = sqlda;
- sqlda = sqlda_new;
}
}
}
diff --git a/src/interfaces/ecpg/test/expected/sql-sqlda.stderr b/src/interfaces/ecpg/test/expected/sql-sqlda.stderr
index acb3198..9eb54f2 100644
--- a/src/interfaces/ecpg/test/expected/sql-sqlda.stderr
+++ b/src/interfaces/ecpg/test/expected/sql-sqlda.stderr
@@ -148,23 +148,23 @@
[NO_PID]: sqlca: code: 0, state: 00000
[NO_PID]: ecpg_process_output on line 141: new sqlda was built
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_set_native_sqlda on line 141 row 2 col 0 IS NOT NULL
+[NO_PID]: ecpg_set_native_sqlda on line 141 row 0 col 0 IS NOT NULL
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 141: RESULT: 4 offset: -1; array: no
+[NO_PID]: ecpg_get_data on line 141: RESULT: 1 offset: -1; array: no
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_set_native_sqlda on line 141 row 2 col 1 IS NOT NULL
+[NO_PID]: ecpg_set_native_sqlda on line 141 row 0 col 1 IS NOT NULL
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 141: RESULT: d offset: -1; array: no
+[NO_PID]: ecpg_get_data on line 141: RESULT: a offset: -1; array: no
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_set_native_sqlda on line 141 row 2 col 2 IS NOT NULL
+[NO_PID]: ecpg_set_native_sqlda on line 141 row 0 col 2 IS NOT NULL
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_set_native_sqlda on line 141 row 2 col 3 IS NOT NULL
+[NO_PID]: ecpg_set_native_sqlda on line 141 row 0 col 3 IS NOT NULL
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 141: RESULT: 4 offset: -1; array: no
+[NO_PID]: ecpg_get_data on line 141: RESULT: 1 offset: -1; array: no
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_set_native_sqlda on line 141 row 2 col 4 IS NOT NULL
+[NO_PID]: ecpg_set_native_sqlda on line 141 row 0 col 4 IS NOT NULL
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 141: RESULT: d offset: -1; array: no
+[NO_PID]: ecpg_get_data on line 141: RESULT: a offset: -1; array: no
[NO_PID]: sqlca: code: 0, state: 00000
[NO_PID]: ecpg_process_output on line 141: putting result (1 tuple 5 fields) into sqlda descriptor
[NO_PID]: sqlca: code: 0, state: 00000
@@ -190,23 +190,23 @@
[NO_PID]: sqlca: code: 0, state: 00000
[NO_PID]: ecpg_process_output on line 141: new sqlda was built
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_set_native_sqlda on line 141 row 0 col 0 IS NOT NULL
+[NO_PID]: ecpg_set_native_sqlda on line 141 row 2 col 0 IS NOT NULL
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 141: RESULT: 1 offset: -1; array: no
+[NO_PID]: ecpg_get_data on line 141: RESULT: 4 offset: -1; array: no
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_set_native_sqlda on line 141 row 0 col 1 IS NOT NULL
+[NO_PID]: ecpg_set_native_sqlda on line 141 row 2 col 1 IS NOT NULL
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 141: RESULT: a offset: -1; array: no
+[NO_PID]: ecpg_get_data on line 141: RESULT: d offset: -1; array: no
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_set_native_sqlda on line 141 row 0 col 2 IS NOT NULL
+[NO_PID]: ecpg_set_native_sqlda on line 141 row 2 col 2 IS NOT NULL
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_set_native_sqlda on line 141 row 0 col 3 IS NOT NULL
+[NO_PID]: ecpg_set_native_sqlda on line 141 row 2 col 3 IS NOT NULL
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 141: RESULT: 1 offset: -1; array: no
+[NO_PID]: ecpg_get_data on line 141: RESULT: 4 offset: -1; array: no
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_set_native_sqlda on line 141 row 0 col 4 IS NOT NULL
+[NO_PID]: ecpg_set_native_sqlda on line 141 row 2 col 4 IS NOT NULL
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 141: RESULT: a offset: -1; array: no
+[NO_PID]: ecpg_get_data on line 141: RESULT: d offset: -1; array: no
[NO_PID]: sqlca: code: 0, state: 00000
[NO_PID]: ecpg_process_output on line 141: putting result (1 tuple 5 fields) into sqlda descriptor
[NO_PID]: sqlca: code: 0, state: 00000