Is there a maintainer for ecpg? patch included

Поиск
Список
Период
Сортировка
От Christof Petig
Тема Is there a maintainer for ecpg? patch included
Дата
Msg-id 37E0E0A0.2C650305@wtal.de
обсуждение исходный текст
Список pgsql-hackers
Dear Pgsql Wizards,

I posted this message three weeks ago on pgsql-bugs and got no reply.
Is there a maintainer for ecpg? I have also trapped some other bugs /
oddities (e.g. upper case for table names etc. gets lost even if
quoted).

The patch does
- enables the use of bool variables in fields which might become NULL.
  Up to now the lib told you that NULL is not a bool variable, even if
  you provided an indicator.

- the second patch checks whether a value is null and issues an error if
  no indicator is provided.

Sidenote: IIRC, the variable should be left alone if the value is NULL.
ECPGlib sets it's value to 0 on NULL. Is this a violation of the
standard?

Regards
     Christof

PS: I offer some time for ecpg if there is no current maintainer. Or
should I address another list? (pgsql-interfaces?)--- src/interfaces/ecpg/ChangeLog.orig    Mon Aug  2 11:14:41 1999
+++ src/interfaces/ecpg/ChangeLog    Fri Sep 10 13:34:19 1999
@@ -1,3 +1,8 @@
+Tue Aug 24 15:53:28 MEST 1999
+
+    - made NULL a valid bool value
+    - check for indicator variables on NULL
+
 Wed Feb 11 10:58:13 CET 1998

     - Added '-d' option to turn on debugging.
--- src/interfaces/ecpg/include/ecpgerrno.h.orig    Sat Mar 20 20:46:33 1999
+++ src/interfaces/ecpg/include/ecpgerrno.h    Fri Sep 10 13:33:43 1999
@@ -22,6 +22,7 @@
 #define ECPG_FLOAT_FORMAT    -206
 #define ECPG_CONVERT_BOOL    -207
 #define ECPG_EMPTY        -208
+#define ECPG_MISSING_INDICATOR    -209

 #define ECPG_NO_CONN        -220
 #define ECPG_NOT_CONN        -221
--- src/interfaces/ecpg/lib/ecpglib.c.orig    Mon Aug  2 11:14:41 1999
+++ src/interfaces/ecpg/lib/ecpglib.c    Fri Sep 10 13:34:12 1999
@@ -755,7 +755,16 @@
                             case ECPGt_unsigned_long:
                                 ((long *) var->ind_value)[act_tuple] = -PQgetisnull(results, act_tuple, act_field);
                                 break;
+                            case ECPGt_NO_INDICATOR:
+                                if (PQgetisnull(results, act_tuple, act_field))
+                                {
+                                    register_error(ECPG_MISSING_INDICATOR, "NULL value without indicator variable on
line%d.", stmt->lineno); 
+                                    status = false;
+                                }
+                                break;
                             default:
+                                register_error(ECPG_UNSUPPORTED, "Unsupported indicator type %s on line %d.",
ECPGtype_name(var->ind_type),stmt->lineno); 
+                                status = false;
                                 break;
                         }

@@ -878,6 +887,11 @@
                                     else if (pval[0] == 't' && pval[1] == '\0')
                                     {
                                         ((char *) var->value)[act_tuple] = true;
+                                        break;
+                                    }
+                                    else if (pval[0] == '\0' && PQgetisnull(results, act_tuple, act_field))
+                                    {
+                                        // NULL is valid
                                         break;
                                     }
                                 }

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Leon
Дата:
Сообщение: Re: [HACKERS] patches
Следующее
От: Tom Lane
Дата:
Сообщение: Re: [HACKERS] NOTICE: SIReadEntryData: cache state reset TRAP: Failed Assertion("!(RelationNameCache->hctl->nkeys == 10):", File: "relcache.c", Line: 1458)