Merge lp:~linuxjedi/drizzle/trunk-bug-528410 into lp:~drizzle-trunk/drizzle/development

Proposed by Andrew Hutchings
Status: Merged
Approved by: Brian Aker
Approved revision: 2412
Merged at revision: 2415
Proposed branch: lp:~linuxjedi/drizzle/trunk-bug-528410
Merge into: lp:~drizzle-trunk/drizzle/development
Diff against target: 152 lines (+61/-2)
6 files modified
libdrizzle-1.0/libdrizzle/column.c (+16/-0)
libdrizzle-1.0/libdrizzle/column_client.h (+8/-1)
libdrizzle-1.0/libdrizzle/row.c (+7/-0)
libdrizzle-2.0/libdrizzle/column.cc (+16/-0)
libdrizzle-2.0/libdrizzle/column_client.h (+7/-1)
libdrizzle-2.0/libdrizzle/row.cc (+7/-0)
To merge this branch: bzr merge lp:~linuxjedi/drizzle/trunk-bug-528410
Reviewer Review Type Date Requested Status
Stewart Smith (community) Approve
Drizzle Merge Team Pending
Review via email: mp+74395@code.launchpad.net

Description of the change

Add drizzle_column_skip_all function
Add error when row retrieval is attempted before all columns are retrieved

To post a comment you must log in.
Revision history for this message
Stewart Smith (stewart) :
review: Approve
Revision history for this message
Brian Aker (brianaker) wrote :

(Sorry about hitting reject, I meant accept, should be corrected)

Revision history for this message
Andrew Hutchings (linuxjedi) wrote :

hehe, no problem :)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'libdrizzle-1.0/libdrizzle/column.c'
2--- libdrizzle-1.0/libdrizzle/column.c 2011-07-20 13:51:34 +0000
3+++ libdrizzle-1.0/libdrizzle/column.c 2011-09-07 11:23:04 +0000
4@@ -531,6 +531,21 @@
5 return ret;
6 }
7
8+drizzle_return_t drizzle_column_skip_all(drizzle_result_st *result)
9+{
10+ drizzle_return_t ret;
11+ uint16_t it;
12+
13+ for (it= 1; it <= result->column_count; it++)
14+ {
15+ ret= drizzle_column_skip(result);
16+ if (ret != DRIZZLE_RETURN_OK)
17+ return ret;
18+ }
19+
20+ return DRIZZLE_RETURN_OK;
21+}
22+
23 drizzle_column_st *drizzle_column_read(drizzle_result_st *result,
24 drizzle_column_st *column,
25 drizzle_return_t *ret_ptr)
26@@ -791,6 +806,7 @@
27 con->buffer_ptr+= con->packet_size;
28 con->buffer_size-= con->packet_size;
29 con->packet_size= 0;
30+ con->result->column_current++;
31
32 drizzle_state_pop(con);
33 }
34
35=== modified file 'libdrizzle-1.0/libdrizzle/column_client.h'
36--- libdrizzle-1.0/libdrizzle/column_client.h 2010-12-10 20:09:17 +0000
37+++ libdrizzle-1.0/libdrizzle/column_client.h 2011-09-07 11:23:04 +0000
38@@ -58,12 +58,19 @@
39 */
40
41 /**
42- * Skip all columns in result.
43+ * Skip a column in result.
44 */
45 DRIZZLE_API
46 drizzle_return_t drizzle_column_skip(drizzle_result_st *result);
47
48 /**
49+ * Skip all columns in a result
50+ */
51+
52+DRIZZLE_API
53+drizzle_return_t drizzle_column_skip_all(drizzle_result_st *result);
54+
55+/**
56 * Read column information.
57 *
58 * @param[in,out] result pointer to the structure to read from.
59
60=== modified file 'libdrizzle-1.0/libdrizzle/row.c'
61--- libdrizzle-1.0/libdrizzle/row.c 2010-12-12 11:52:00 +0000
62+++ libdrizzle-1.0/libdrizzle/row.c 2011-09-07 11:23:04 +0000
63@@ -47,6 +47,13 @@
64
65 uint64_t drizzle_row_read(drizzle_result_st *result, drizzle_return_t *ret_ptr)
66 {
67+ if ((result->column_current != result->column_count) && (!(result->options & DRIZZLE_RESULT_BUFFER_COLUMN)))
68+ {
69+ drizzle_set_error(result->con->drizzle, "drizzle_row_read", "cannot retrieve rows until all columns are retrieved");
70+ *ret_ptr= DRIZZLE_RETURN_NOT_READY;
71+ return 0;
72+ }
73+
74 if (drizzle_state_none(result->con))
75 {
76 drizzle_state_push(result->con, drizzle_state_row_read);
77
78=== modified file 'libdrizzle-2.0/libdrizzle/column.cc'
79--- libdrizzle-2.0/libdrizzle/column.cc 2011-07-20 13:51:34 +0000
80+++ libdrizzle-2.0/libdrizzle/column.cc 2011-09-07 11:23:04 +0000
81@@ -524,6 +524,21 @@
82 return ret;
83 }
84
85+drizzle_return_t drizzle_column_skip_all(drizzle_result_st *result)
86+{
87+ drizzle_return_t ret;
88+ uint16_t it;
89+
90+ for (it= 1; it <= result->column_count; it++)
91+ {
92+ ret= drizzle_column_skip(result);
93+ if (ret != DRIZZLE_RETURN_OK)
94+ return ret;
95+ }
96+
97+ return DRIZZLE_RETURN_OK;
98+}
99+
100 drizzle_column_st *drizzle_column_read(drizzle_result_st *result,
101 drizzle_column_st *column,
102 drizzle_return_t *ret_ptr)
103@@ -779,6 +794,7 @@
104 con->buffer_ptr+= con->packet_size;
105 con->buffer_size-= con->packet_size;
106 con->packet_size= 0;
107+ con->result->column_count++;
108
109 drizzle_state_pop(con);
110 }
111
112=== modified file 'libdrizzle-2.0/libdrizzle/column_client.h'
113--- libdrizzle-2.0/libdrizzle/column_client.h 2011-03-22 18:39:54 +0000
114+++ libdrizzle-2.0/libdrizzle/column_client.h 2011-09-07 11:23:04 +0000
115@@ -58,12 +58,18 @@
116 */
117
118 /**
119- * Skip all columns in result.
120+ * Skip a column in result.
121 */
122 DRIZZLE_API
123 drizzle_return_t drizzle_column_skip(drizzle_result_st *result);
124
125 /**
126+ * Skip all columns in a result.
127+ */
128+DRIZZLE_API
129+drizzle_return_t drizzle_column_skip_all(drizzle_result_st *result);
130+
131+/**
132 * Read column information.
133 *
134 * @param[in,out] result pointer to the structure to read from.
135
136=== modified file 'libdrizzle-2.0/libdrizzle/row.cc'
137--- libdrizzle-2.0/libdrizzle/row.cc 2011-06-14 21:15:09 +0000
138+++ libdrizzle-2.0/libdrizzle/row.cc 2011-09-07 11:23:04 +0000
139@@ -47,6 +47,13 @@
140
141 uint64_t drizzle_row_read(drizzle_result_st *result, drizzle_return_t *ret_ptr)
142 {
143+ if ((result->column_current != result->column_count) && (!(result->options & DRIZZLE_RESULT_BUFFER_COLUMN)))
144+ {
145+ drizzle_set_error(result->con->drizzle, "drizzle_row_read", "cannot retrieve rows until all columns are retrieved");
146+ *ret_ptr= DRIZZLE_RETURN_NOT_READY;
147+ return 0;
148+ }
149+
150 if (drizzle_state_none(result->con))
151 {
152 drizzle_state_push(result->con, drizzle_state_row_read);