Sure, I can take a look. I'm assuming that this would have to be handled at
the destination layer?

D


> From: Jacob Maine <[EMAIL PROTECTED]>
> Date: Wed, 22 Oct 2008 19:05:35 -0700 (PDT)
> To: Darin Wilson <[EMAIL PROTECTED]>
> Cc: <activewarehouse-discuss@rubyforge.org>
> Subject: Re: [Activewarehouse-discuss] would the real codebase please stand
> up? :)
> 
> Hi Darin -
> 
> It looks like MySQL supports a few different ways of converting text into
> nulls.  As you pointed out, I can't find documentation about turning empty
> strings into nulls.  However, it looks like you can convert \N (or NULL,
> depending on some other settings) into a null.  See
> http://dev.mysql.com/doc/refman/6.0/en/load-data.html starting with "Handling
> of NULL values varies ...".
> 
> Similarly, by default Postgres treats \N as a null, although it can be
> configured to act differently.  See
> http://www.postgresql.org/docs/8.3/interactive/sql-copy.html starting with
> "null string".
> 
> Maybe the best way to handle this would be to make AW output nulls as \N
> instead of empty strings.  Would you be willing to look into that?
> 
> I agree it's best to have AW-ETL work the same for both adapters.
> 
> Best,
> Jacob
> 
> 
> ----- "Darin Wilson" <[EMAIL PROTECTED]> wrote:
> 
>> Hi Jacob-
>> 
>> I finally got around to testing your fixes. Unfortunately, MySQL does
>> not
>> convert empty strings to nulls out of the box, nor could I find a way
>> to
>> make it support this behavior. (This was after a small amount of
>> googling
>> around; there may be an answer somewhere that I just couldn't find -
>> maybe
>> someone here knows?).
>> 
>> I'll keep poking around a little bit and see if I can see a way around
>> this
>> - it would be a bummer if the ETL framework exhibited radically
>> different
>> behavior depending on which adapter it was using.
>> 
>> Darin
>>   
>> 
>> 
>>> From: Jacob Maine <[EMAIL PROTECTED]>
>>> Date: Fri, 17 Oct 2008 11:07:53 -0700 (PDT)
>>> To: Darin Wilson <[EMAIL PROTECTED]>
>>> Cc: <activewarehouse-discuss@rubyforge.org>
>>> Subject: Re: [Activewarehouse-discuss] would the real codebase
>> please stand
>>> up? :)
>>> 
>>> Hi Darin - 
>>> 
>>> Please pull from my adapter_extensions branch
>>> (http://github.com/mainej/adapter_extensions/tree) or wait until
>> Anthony pulls
>>> my changes.  Unfortunately, I'm not sure that will fix
>>> test_bulk_import_with_empties.  I can't be sure because I don't have
>> MySQL
>>> installed, and don't have time to do that right now.
>>> 
>>> The change I made to adapter_extensions allows Postgres to import
>> empty
>>> strings as nulls.  That's what the test is about.  I put the test in
>> for both
>>> adapters, hoping that MySQL would do the right thing out of the box.
>>  If it's
>>> not working, I suggest either making your proposed change, or
>> looking at
>>> adapter_extensions to see if you can get MySQL to handle empty
>> strings in a
>>> more useful way.  I'll look at this stuff more this weekend to make
>> sure my
>>> system is up-to-date and tests are passing for Postgres.
>>> 
>>> Hopefully with two groups developing for Postgres and MySQL, we'll
>> get AW & AW
>>> ETL back into a stable state.
>>> 
>>> Best, 
>>> Jacob
>>> 
>>> 
>>> ----- Darin Wilson <[EMAIL PROTECTED]> wrote:
>>>> I just pulled the latest from your github repo and ran the ETL test
>> suite
>>>> locally against MySQL. I got 10 errors that were about SCDs, so I'm
>> assuming
>>>> those were the same ones you mentioned in your last message(?).
>>>> 
>>>> There was one other error:
>>>> 
>>>>   1) Failure:
>>>> test_bulk_import_with_empties(ProcessorTest)
>> [./test/processor_test.rb:19]:
>>>> <ActiveRecord::StatementInvalid> exception expected but none was
>> thrown.
>>>> 
>>>> It turns out that MySQL is much less strict about what goes into
>> the bulk
>>>> loader - if you try to load a row with an empty value into a column
>> that
>>>> disallows null, MySQL just skips it without an error. Nice! :)
>>>> 
>>>> I'm not sure how you'd like to handle that. I tried poking around a
>> bit to
>>>> see if there's a way to force MySQL into being more strict, but I
>> couldn't
>>>> get anything to work reliably. The simplest fix would be to do
>> something
>>>> like this in the test:
>>>> 
>>>>     unless ETL::Engine.connection(:data_warehouse).class ==
>>>> ActiveRecord::ConnectionAdapters::MysqlAdapter
>>>>       assert_raise(ActiveRecord::StatementInvalid) {
>>>> do_bulk_import('bulk_import_with_empties.txt') }
>>>>     end
>>>> 
>>>> which sort of invalidates the test, but it doesn't seem like
>> there's a way
>>>> to make this test actually work with MySQL. Your call. ;)
>>>> 
>>>> Darin
>>>> 
>>>> 
>>>>> From: Anthony Eden <[EMAIL PROTECTED]>
>>>>> Date: Thu, 16 Oct 2008 15:23:04 -0400
>>>>> To: Darin Wilson <[EMAIL PROTECTED]>
>>>>> Cc: <activewarehouse-discuss@rubyforge.org>
>>>>> Subject: Re: [Activewarehouse-discuss] would the real codebase
>> please stand
>>>>> up? :)
>>>>> 
>>>>> I think I have most of the fixes to ETL in for the 2.1 changes.
>> I've
>>>>> started changing over some of the tests to use shoulda 1.x, so if
>> you
>>>>> want to run the built in tests then you'll need the shoulda gem.
>> There
>>>>> are currently two failing tests related to the SCD
>> implementation.
>>>>> Jacob, was that an area you worked on? If so could you take a look
>> at
>>>>> the failing tests? Also, I currently have tested with Postgres
>> locally
>>>>> but not MySQL, so if someone wants to fight through the test suite
>> on
>>>>> MySQL, be my guest. :-)
>>>>> 
>>>>> Thanks.
>>>>> 
>>>>> -Anthony
>>>>> 
>>>>> On Thu, Oct 16, 2008 at 12:11 PM, Darin Wilson
>>>>> <[EMAIL PROTECTED]> wrote:
>>>>>> Cool - that is what I was going to start working on. :)
>>>>>> 
>>>>>> Please let us know when your 2.1 fixes to ETL are checked in -
>> I'd like to
>>>>>> try it out with our ETL (and I have a bunch of test cases for
>> it).
>>>>>> 
>>>>>> Thanks!
>>>>>> Darin
>>>>>> 
>>>>>>> From: Anthony Eden <[EMAIL PROTECTED]>
>>>>>>> Date: Thu, 16 Oct 2008 06:59:41 -0400
>>>>>>> To: Marty Haught <[EMAIL PROTECTED]>
>>>>>>> Cc: <activewarehouse-discuss@rubyforge.org>
>>>>>>> Subject: Re: [Activewarehouse-discuss] would the real codebase
>> please
>>>>>>> stand
>>>>>>> up? :)
>>>>>>> 
>>>>>>> I've started the upgrade to 2.1. I've already modified
>> ActiveWarehouse
>>>>>>> ETL to handle the new migration process and I have it running
>> right
>>>>>>> now under 2.1. Once I get past my first ETL load on the project
>> I'm
>>>>>>> working on I'll move onto the AW plugin.
>>>>>>> 
>>>>>>> -Anthony
>>>>>>> _______________________________________________
>>>>>>> Activewarehouse-discuss mailing list
>>>>>>> Activewarehouse-discuss@rubyforge.org
>>>>>>> http://rubyforge.org/mailman/listinfo/activewarehouse-discuss
>>>>>> 
>>>>>> 
>>>>>> _______________________________________________
>>>>>> Activewarehouse-discuss mailing list
>>>>>> Activewarehouse-discuss@rubyforge.org
>>>>>> http://rubyforge.org/mailman/listinfo/activewarehouse-discuss
>>>>>> 
>>>> 
>>>> 
>>>> _______________________________________________
>>>> Activewarehouse-discuss mailing list
>>>> Activewarehouse-discuss@rubyforge.org
>>>> http://rubyforge.org/mailman/listinfo/activewarehouse-discuss
>>> 
>> 
>> 
>> _______________________________________________
>> Activewarehouse-discuss mailing list
>> Activewarehouse-discuss@rubyforge.org
>> http://rubyforge.org/mailman/listinfo/activewarehouse-discuss


_______________________________________________
Activewarehouse-discuss mailing list
Activewarehouse-discuss@rubyforge.org
http://rubyforge.org/mailman/listinfo/activewarehouse-discuss

Reply via email to