|
|
93eabee |
From: Peter Lemenkov <lemenkov@gmail.com>
|
|
|
93eabee |
Date: Tue, 19 Mar 2013 13:36:44 +0400
|
|
|
fa3f242 |
Subject: [PATCH] Fix for old Perl in RHEL5
|
|
|
93eabee |
|
|
|
93eabee |
Partially revert a3cec180516b16ac84fc7e457cec2a03039e04bf
|
|
|
93eabee |
|
|
|
93eabee |
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
|
|
|
93eabee |
|
|
|
93eabee |
diff --git a/modules/db_perlvdb/perlvdb_conv.c b/modules/db_perlvdb/perlvdb_conv.c
|
|
|
93eabee |
index 511e076..ce1d45c 100644
|
|
|
93eabee |
--- a/modules/db_perlvdb/perlvdb_conv.c
|
|
|
93eabee |
+++ b/modules/db_perlvdb/perlvdb_conv.c
|
|
|
93eabee |
@@ -215,7 +215,6 @@ SV *cond2perlcond(db_key_t key, db_op_t op, db_val_t* val) {
|
|
|
93eabee |
|
|
|
93eabee |
int perlresult2dbres(SV *perlres, db_res_t **r) {
|
|
|
93eabee |
|
|
|
93eabee |
- HV * result = NULL;
|
|
|
93eabee |
SV *colarrayref = NULL;
|
|
|
93eabee |
AV *colarray = NULL;
|
|
|
93eabee |
SV *acol = NULL;
|
|
|
93eabee |
@@ -253,14 +252,11 @@ int perlresult2dbres(SV *perlres, db_res_t **r) {
|
|
|
93eabee |
goto error;
|
|
|
93eabee |
}
|
|
|
93eabee |
|
|
|
93eabee |
- result = (HV*)SvRV(perlres);
|
|
|
93eabee |
-
|
|
|
93eabee |
/* Memory allocation for C side result structure */
|
|
|
93eabee |
*r = db_new_result();
|
|
|
93eabee |
/* Fetch column definitions */
|
|
|
93eabee |
- colarrayref = *hv_fetchs(result, PERL_VDB_COLDEFSMETHOD, 0);
|
|
|
93eabee |
- /* colarrayref = perlvdb_perlmethod(perlres, PERL_VDB_COLDEFSMETHOD,
|
|
|
93eabee |
- NULL, NULL, NULL, NULL); */
|
|
|
93eabee |
+ colarrayref = perlvdb_perlmethod(perlres, PERL_VDB_COLDEFSMETHOD,
|
|
|
93eabee |
+ NULL, NULL, NULL, NULL);
|
|
|
93eabee |
if (!(SvROK(colarrayref))) goto error;
|
|
|
93eabee |
colarray = (AV *)SvRV(colarrayref);
|
|
|
93eabee |
|
|
|
93eabee |
@@ -297,25 +293,9 @@ int perlresult2dbres(SV *perlres, db_res_t **r) {
|
|
|
93eabee |
|
|
|
93eabee |
|
|
|
93eabee |
}
|
|
|
93eabee |
- if(hv_exists(result, "rows", 4)){
|
|
|
93eabee |
- rowarrayref =(SV*) hv_fetchs(result, "rows", 0);
|
|
|
93eabee |
- }else{
|
|
|
93eabee |
- (*r)->n = 0;
|
|
|
93eabee |
- (*r)->res_rows = 0;
|
|
|
93eabee |
- (*r)->last_row = 0;
|
|
|
93eabee |
- goto end;
|
|
|
93eabee |
+ rowarrayref = perlvdb_perlmethod(perlres, PERL_VDB_ROWSMETHOD,
|
|
|
93eabee |
+ NULL, NULL, NULL, NULL);
|
|
|
93eabee |
|
|
|
93eabee |
- }
|
|
|
93eabee |
-
|
|
|
93eabee |
- if(rowarrayref){
|
|
|
93eabee |
- rowarrayref = *((SV**)rowarrayref);
|
|
|
93eabee |
- }else{
|
|
|
93eabee |
- (*r)->n = 0;
|
|
|
93eabee |
- (*r)->res_rows = 0;
|
|
|
93eabee |
- (*r)->last_row = 0;
|
|
|
93eabee |
- goto end;
|
|
|
93eabee |
-
|
|
|
93eabee |
- }
|
|
|
93eabee |
if (!(SvROK(rowarrayref))) { /* Empty result set */
|
|
|
93eabee |
(*r)->n = 0;
|
|
|
93eabee |
(*r)->res_rows = 0;
|
|
|
93eabee |
@@ -354,11 +334,10 @@ int perlresult2dbres(SV *perlres, db_res_t **r) {
|
|
|
93eabee |
cur_val.nul = 1;
|
|
|
93eabee |
continue;
|
|
|
93eabee |
}
|
|
|
93eabee |
- atypesv = *hv_fetchs((HV*)SvRV(aelement),PERL_VDB_TYPEMETHOD,0); /*aelement->{type} */
|
|
|
93eabee |
- atype = SvIV(atypesv);
|
|
|
93eabee |
- /*atypesv = perlvdb_perlmethod(aelement,
|
|
|
93eabee |
+ atypesv = perlvdb_perlmethod(aelement,
|
|
|
93eabee |
PERL_VDB_TYPEMETHOD,
|
|
|
93eabee |
- NULL, NULL, NULL, NULL);*/
|
|
|
93eabee |
+ NULL, NULL, NULL, NULL);
|
|
|
93eabee |
+ atype = SvIV(atypesv);
|
|
|
93eabee |
aval = perlvdb_perlmethod(aelement, PERL_VDB_DATAMETHOD,
|
|
|
93eabee |
NULL, NULL, NULL, NULL);
|
|
|
93eabee |
(*r)->rows[i].values[j].type = atype;
|