]> granicus.if.org Git - postgresql/commitdiff
Let compiler handle size calculation of bool types.
authorMichael Meskes <meskes@postgresql.org>
Thu, 17 Sep 2015 13:41:04 +0000 (15:41 +0200)
committerMichael Meskes <meskes@postgresql.org>
Sat, 19 Sep 2015 09:14:02 +0000 (11:14 +0200)
Back in the day this did not work, but modern compilers should handle it themselves.

src/interfaces/ecpg/ecpglib/data.c
src/interfaces/ecpg/ecpglib/execute.c

index de1bcebbf7695c10ee71eb1283e682f76651809d..a04da1a99627cdf0af1f11ed084d86a252cebe90 100644 (file)
@@ -422,27 +422,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;
                                        }
index dbda39186f4904c3f7850f06d919d1aec2c67ca0..6c0f129629f44f2a75a451bc5decebb51ea3a1f2 100644 (file)
@@ -756,18 +756,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, "}");
                                }