[ic] [interchange] Only apply GDBM filters if they are not already installed

Gert van der Spoel gert at 3edge.com
Mon Sep 3 08:43:00 UTC 2012


> -----Original Message-----
> From: interchange-users-bounces at icdevgroup.org [mailto:interchange-users-
> bounces at icdevgroup.org] On Behalf Of Stefan Hornburg (Racke)
> Sent: maandag 3 september 2012 11:31
> To: interchange-users at icdevgroup.org
> Subject: Re: [ic] [interchange] Only apply GDBM filters if they are not
> already installed
> 
> On 09/03/2012 10:22 AM, Gert van der Spoel wrote:
> >> -----Original Message-----
> >> From: interchange-users-bounces at icdevgroup.org [mailto:interchange-
> users-
> >> bounces at icdevgroup.org] On Behalf Of Stefan Hornburg (Racke)
> >> Sent: maandag 3 september 2012 11:11
> >> To: interchange-users at icdevgroup.org
> >> Subject: Re: [ic] [interchange] Only apply GDBM filters if they are not
> >> already installed
> >>
> >> On 09/03/2012 10:07 AM, Gert van der Spoel wrote:
> >>>> -----Original Message-----
> >>>> From: interchange-users-bounces at icdevgroup.org [mailto:interchange-
> >> users-
> >>>> bounces at icdevgroup.org] On Behalf Of Stefan Hornburg (Racke)
> >>>> Sent: maandag 3 september 2012 10:49
> >>>> To: interchange-users at icdevgroup.org
> >>>> Subject: Re: [ic] [interchange] Only apply GDBM filters if they are
> not
> >>>> already installed
> >>>>
> >>>> On 09/01/2012 02:23 PM, Stefan Hornburg (Racke) wrote:
> >>>>> On 08/31/2012 03:22 AM, David Christensen wrote:
> >>>>>> commit 0c31ea3287df97c8fedbf23ad71244e4ebe019c7
> >>>>>> Author: David Christensen<david at endpoint.com>
> >>>>>> Date: Thu Aug 30 20:01:28 2012 -0500
> >>>>>>
> >>>>>> Only apply GDBM filters if they are not already installed
> >>>>>>
> >>>>>> In certain circumstances, using the same GDBM-based file in
> multiple
> >>>> catalogs with
> >>>>>> GDBM_ENABLE_UTF8=1 set was causing the GDBM filters to be installed
> >>>> multiple times on the same
> >>>>>> handle, which was resulting in encoding/decoding errors.
> >>>>>>
> >>>>>> Vend::Table::GDBM will now only install the filters if they do not
> >>>> exist on this handle, which
> >>>>>> should preserve existing behavior plus account for these corner-
> >> cases.
> >>>>>>
> >>>>>
> >>>>> Actually it seems to be the other way around, the filter is only
> >> applied
> >>>> to the first file:
> >>>>>
> >>>>> Configuring catalog dataident...Using MySQL,
> >>>> DSN=dbi:mysql:dataident...applying UTF-8 filters to GDBM handle
> >>>>> done.
> >>>>> Configuring catalog dataident_dev...Using MySQL,
> >>>> DSN=dbi:mysql:dataident_dev...LocaleDatabase locale: locale import
> into
> >>>> failed: Wide character in subroutine entry at
> >>>> /home/dataident/interchange/lib/Vend/Table/Common.pm line 516,<IN>
> >> line
> >>>> 2.
> >>>>>
> >>>>> done.
> >>>>>
> >>>>
> >>>> I'm convinced now that the GDBM code is fine, the error happens on
> the
> >>>> import of the text file.
> >>>> Why this happens only in the second catalog still eludes me.
> >>>>
> >>>
> >>> What is found on :
> /home/dataident/interchange/lib/Vend/Table/Common.pm
> >> line
> >>> 516 ?
> >>
> >>      $s->[$TIE_HASH]{"k$key"} = join("\t", map(stuff($_), @fields));
> >
> > If you can mess around in your install for debugging perhaps it is an
> idea
> > to see what $s->[$CONFIG]{FILTER_TO} does on the 2 lines above this
> line.
> > Does it act differently the first time and the second?
> 
> FILTER_TO is the same in both cases (empty), but the content of @fields
> differs.
> In the first catalog it is valid UTF-8, in the second case it isn't.

I'm sure you are debugging faster than I can suggest things :)
If I read it correctly you get the stuff_row from  sub set_field  on line
563  ... there it does the $s->set_row(@row);  ... I would assume on first
glance it comes from here so the $value here would also be invalid UTF-8 ...
right?






More information about the interchange-users mailing list