[DBD::Pg 1/5] Factor placeholder key creation into function
dbdpg-commits-gENoVmVU/[email protected] Mon, 18 Apr 2016 17:10:21 +0000
| Newsgroups | gmane.comp.db.postgresql.dbdpg.cvs |
|---|---|
| Message-ID | <[email protected]> |
Committed by =?UTF-8?q?Dagfinn=20Ilmari=20Manns=C3=A5ker?= <[email protected]> Subject: [DBD::Pg 1/5] Factor placeholder key creation into function --- dbdimp.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/dbdimp.c b/dbdimp.c index d364716..a8959fc 100644 --- a/dbdimp.c +++ b/dbdimp.c @@ -77,6 +77,7 @@ static ExecStatusType _result(pTHX_ imp_dbh_t *imp_dbh, const char *sql); static void _fatal_sqlstate(pTHX_ imp_dbh_t *imp_dbh); static ExecStatusType _sqlstate(pTHX_ imp_dbh_t *imp_dbh, PGresult *result); static int pg_db_rollback_commit (pTHX_ SV *dbh, imp_dbh_t *imp_dbh, int action); +static SV *pg_st_placeholder_key (imp_sth_t *imp_sth, ph_t *currph, int i); static void pg_st_split_statement (pTHX_ imp_sth_t *imp_sth, int version, char *statement); static int pg_st_prepare_statement (pTHX_ SV *sth, imp_sth_t *imp_sth); static int is_high_bit_set(pTHX_ const unsigned char *val, STRLEN size); @@ -998,6 +999,11 @@ int dbd_db_STORE_attrib (SV * dbh, imp_dbh_t * imp_dbh, SV * keysv, SV * valuesv } /* end of dbd_db_STORE_attrib */ +static SV * pg_st_placeholder_key (imp_sth_t * imp_sth, ph_t * currph, int i) { + if (3 == imp_sth->placeholder_type) + return newSVpv(currph->fooname, 0); + return newSViv(i+1); +} /* ================================================================== */ SV * dbd_st_FETCH_attrib (SV * sth, imp_sth_t * imp_sth, SV * keysv) @@ -1021,7 +1027,7 @@ SV * dbd_st_FETCH_attrib (SV * sth, imp_sth_t * imp_sth, SV * keysv) int i; for (i=0,currph=imp_sth->ph; NULL != currph; currph=currph->nextph,i++) { SV *key, *val; - key = (3==imp_sth->placeholder_type ? newSVpv(currph->fooname,0) : newSViv(i+1)); + key = pg_st_placeholder_key(imp_sth, currph, i); val = newSViv(NULL == currph->bind_type ? 0 : 1); if (! hv_store_ent(pvhv, key, val, 0)) { SvREFCNT_dec(val); @@ -1046,7 +1052,7 @@ SV * dbd_st_FETCH_attrib (SV * sth, imp_sth_t * imp_sth, SV * keysv) int i; for (i=0,currph=imp_sth->ph; NULL != currph; currph=currph->nextph,i++) { SV *key, *val; - key = (3==imp_sth->placeholder_type ? newSVpv(currph->fooname,0) : newSViv(i+1)); + key = pg_st_placeholder_key(imp_sth, currph, i); if (NULL == currph->bind_type) { val = newSV(0); if (! hv_store_ent(pvhv, key, val, 0)) { @@ -1080,8 +1086,7 @@ SV * dbd_st_FETCH_attrib (SV * sth, imp_sth_t * imp_sth, SV * keysv) int i; for (i=0,currph=imp_sth->ph; NULL != currph; currph=currph->nextph,i++) { SV *key, *val; - key = (3==imp_sth->placeholder_type ? newSVpv(currph->fooname,0) : newSViv(i+1)); - + key = pg_st_placeholder_key(imp_sth, currph, i); if (NULL == currph->value) { val = newSV(0); if (!hv_store_ent(pvhv, key, val, 0)) { -- 1.8.4