@@ -4128,9 +4128,34 @@ bool mariadb_st_more_results(SV* sth, imp_sth_t* imp_sth)
4128
4128
imp_sth -> result = NULL ;
4129
4129
}
4130
4130
4131
+ imp_sth -> done_desc = FALSE;
4131
4132
imp_sth -> currow = 0 ;
4132
4133
imp_sth -> row_num = 0 ;
4133
4134
4135
+ /* clear NUM_OF_FIELDS attribute */
4136
+ DBIc_DBISTATE (imp_sth )-> set_attr_k (sth , sv_2mortal (newSVpvs ("NUM_OF_FIELDS" )), 0 , sv_2mortal (newSViv (0 )));
4137
+
4138
+ /* delete cached handle attributes */
4139
+ /* XXX should be driven by a list to ease maintenance */
4140
+ (void )hv_deletes ((HV * )SvRV (sth ), "NAME" , G_DISCARD );
4141
+ (void )hv_deletes ((HV * )SvRV (sth ), "NULLABLE" , G_DISCARD );
4142
+ (void )hv_deletes ((HV * )SvRV (sth ), "NUM_OF_FIELDS" , G_DISCARD );
4143
+ (void )hv_deletes ((HV * )SvRV (sth ), "PRECISION" , G_DISCARD );
4144
+ (void )hv_deletes ((HV * )SvRV (sth ), "SCALE" , G_DISCARD );
4145
+ (void )hv_deletes ((HV * )SvRV (sth ), "TYPE" , G_DISCARD );
4146
+ (void )hv_deletes ((HV * )SvRV (sth ), "mariadb_insertid" , G_DISCARD );
4147
+ (void )hv_deletes ((HV * )SvRV (sth ), "mariadb_is_auto_increment" , G_DISCARD );
4148
+ (void )hv_deletes ((HV * )SvRV (sth ), "mariadb_is_blob" , G_DISCARD );
4149
+ (void )hv_deletes ((HV * )SvRV (sth ), "mariadb_is_key" , G_DISCARD );
4150
+ (void )hv_deletes ((HV * )SvRV (sth ), "mariadb_is_num" , G_DISCARD );
4151
+ (void )hv_deletes ((HV * )SvRV (sth ), "mariadb_is_pri_key" , G_DISCARD );
4152
+ (void )hv_deletes ((HV * )SvRV (sth ), "mariadb_length" , G_DISCARD );
4153
+ (void )hv_deletes ((HV * )SvRV (sth ), "mariadb_max_length" , G_DISCARD );
4154
+ (void )hv_deletes ((HV * )SvRV (sth ), "mariadb_table" , G_DISCARD );
4155
+ (void )hv_deletes ((HV * )SvRV (sth ), "mariadb_type" , G_DISCARD );
4156
+ (void )hv_deletes ((HV * )SvRV (sth ), "mariadb_type_name" , G_DISCARD );
4157
+ (void )hv_deletes ((HV * )SvRV (sth ), "mariadb_warning_count" , G_DISCARD );
4158
+
4134
4159
if (DBIc_ACTIVE (imp_sth ))
4135
4160
DBIc_ACTIVE_off (imp_sth );
4136
4161
@@ -4178,45 +4203,19 @@ bool mariadb_st_more_results(SV* sth, imp_sth_t* imp_sth)
4178
4203
imp_sth -> row_num = mysql_affected_rows (imp_dbh -> pmysql );
4179
4204
4180
4205
imp_dbh -> insertid = imp_sth -> insertid = mysql_insert_id (imp_dbh -> pmysql );
4181
- /* No "real" rowset*/
4182
- DBIS -> set_attr_k (sth , sv_2mortal (newSVpvs ("NUM_OF_FIELDS" )), 0 ,
4183
- sv_2mortal (newSViv (0 )));
4184
4206
return TRUE;
4185
4207
}
4186
4208
else
4187
4209
{
4188
4210
/* We have a new rowset */
4189
4211
imp_sth -> row_num = mysql_num_rows (imp_sth -> result );
4190
4212
4191
- /* delete cached handle attributes */
4192
- /* XXX should be driven by a list to ease maintenance */
4193
- (void )hv_deletes ((HV * )SvRV (sth ), "NAME" , G_DISCARD );
4194
- (void )hv_deletes ((HV * )SvRV (sth ), "NULLABLE" , G_DISCARD );
4195
- (void )hv_deletes ((HV * )SvRV (sth ), "NUM_OF_FIELDS" , G_DISCARD );
4196
- (void )hv_deletes ((HV * )SvRV (sth ), "PRECISION" , G_DISCARD );
4197
- (void )hv_deletes ((HV * )SvRV (sth ), "SCALE" , G_DISCARD );
4198
- (void )hv_deletes ((HV * )SvRV (sth ), "TYPE" , G_DISCARD );
4199
- (void )hv_deletes ((HV * )SvRV (sth ), "mariadb_insertid" , G_DISCARD );
4200
- (void )hv_deletes ((HV * )SvRV (sth ), "mariadb_is_auto_increment" , G_DISCARD );
4201
- (void )hv_deletes ((HV * )SvRV (sth ), "mariadb_is_blob" , G_DISCARD );
4202
- (void )hv_deletes ((HV * )SvRV (sth ), "mariadb_is_key" , G_DISCARD );
4203
- (void )hv_deletes ((HV * )SvRV (sth ), "mariadb_is_num" , G_DISCARD );
4204
- (void )hv_deletes ((HV * )SvRV (sth ), "mariadb_is_pri_key" , G_DISCARD );
4205
- (void )hv_deletes ((HV * )SvRV (sth ), "mariadb_length" , G_DISCARD );
4206
- (void )hv_deletes ((HV * )SvRV (sth ), "mariadb_max_length" , G_DISCARD );
4207
- (void )hv_deletes ((HV * )SvRV (sth ), "mariadb_table" , G_DISCARD );
4208
- (void )hv_deletes ((HV * )SvRV (sth ), "mariadb_type" , G_DISCARD );
4209
- (void )hv_deletes ((HV * )SvRV (sth ), "mariadb_type_name" , G_DISCARD );
4210
- (void )hv_deletes ((HV * )SvRV (sth ), "mariadb_warning_count" , G_DISCARD );
4211
-
4212
4213
/* Adjust NUM_OF_FIELDS - which also adjusts the row buffer size */
4213
4214
DBIc_DBISTATE (imp_sth )-> set_attr_k (sth , sv_2mortal (newSVpvs ("NUM_OF_FIELDS" )), 0 ,
4214
4215
sv_2mortal (newSVuv (mysql_num_fields (imp_sth -> result )))
4215
4216
);
4216
4217
4217
4218
DBIc_ACTIVE_on (imp_sth );
4218
-
4219
- imp_sth -> done_desc = FALSE;
4220
4219
}
4221
4220
imp_dbh -> pmysql -> net .last_errno = 0 ;
4222
4221
return TRUE;
0 commit comments