diff options
author | Michael Meskes <meskes@postgresql.org> | 2015-09-17 15:41:04 +0200 |
---|---|---|
committer | Michael Meskes <meskes@postgresql.org> | 2015-09-17 15:42:46 +0200 |
commit | 293fd7c77e40cdf06b7a9eb6db95379be8869b04 (patch) | |
tree | 0d03ccbc61319c8993b2667bf18852571d8e094b /src | |
parent | 22f519c92a45eb017bf2e65f36506a75309f8094 (diff) | |
download | postgresql-293fd7c77e40cdf06b7a9eb6db95379be8869b04.tar.gz postgresql-293fd7c77e40cdf06b7a9eb6db95379be8869b04.zip |
Let compiler handle size calculation of bool types.
Back in the day this did not work, but modern compilers should handle it themselves.
Diffstat (limited to 'src')
-rw-r--r-- | src/interfaces/ecpg/ecpglib/data.c | 18 | ||||
-rw-r--r-- | src/interfaces/ecpg/ecpglib/execute.c | 13 |
2 files changed, 4 insertions, 27 deletions
diff --git a/src/interfaces/ecpg/ecpglib/data.c b/src/interfaces/ecpg/ecpglib/data.c index 8d36484f73a..82ab4aaf868 100644 --- a/src/interfaces/ecpg/ecpglib/data.c +++ b/src/interfaces/ecpg/ecpglib/data.c @@ -423,27 +423,13 @@ ecpg_get_data(const PGresult *results, int act_tuple, int act_field, int lineno, case ECPGt_bool: if (pval[0] == 'f' && pval[1] == '\0') { - if (offset == sizeof(char)) - *((char *) (var + offset * act_tuple)) = false; - else if (offset == sizeof(int)) - *((int *) (var + offset * act_tuple)) = false; - else - ecpg_raise(lineno, ECPG_CONVERT_BOOL, - ECPG_SQLSTATE_DATATYPE_MISMATCH, - NULL); + *((bool *) (var + offset * act_tuple)) = false; pval++; break; } else if (pval[0] == 't' && pval[1] == '\0') { - if (offset == sizeof(char)) - *((char *) (var + offset * act_tuple)) = true; - else if (offset == sizeof(int)) - *((int *) (var + offset * act_tuple)) = true; - else - ecpg_raise(lineno, ECPG_CONVERT_BOOL, - ECPG_SQLSTATE_DATATYPE_MISMATCH, - NULL); + *((bool *) (var + offset * act_tuple)) = true; pval++; break; } diff --git a/src/interfaces/ecpg/ecpglib/execute.c b/src/interfaces/ecpg/ecpglib/execute.c index 9e40f4161a5..3b6eedb03b7 100644 --- a/src/interfaces/ecpg/ecpglib/execute.c +++ b/src/interfaces/ecpg/ecpglib/execute.c @@ -752,18 +752,9 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari { strcpy(mallocedval, "{"); - if (var->offset == sizeof(char)) - for (element = 0; element < asize; element++) - sprintf(mallocedval + strlen(mallocedval), "%c,", (((char *) var->value)[element]) ? 't' : 'f'); + for (element = 0; element < asize; element++) + sprintf(mallocedval + strlen(mallocedval), "%c,", (((bool *) var->value)[element]) ? 't' : 'f'); - /* - * this is necessary since sizeof(C++'s bool)==sizeof(int) - */ - else if (var->offset == sizeof(int)) - for (element = 0; element < asize; element++) - sprintf(mallocedval + strlen(mallocedval), "%c,", (((int *) var->value)[element]) ? 't' : 'f'); - else - ecpg_raise(lineno, ECPG_CONVERT_BOOL, ECPG_SQLSTATE_DATATYPE_MISMATCH, NULL); strcpy(mallocedval + strlen(mallocedval) - 1, "}"); } |