[Dbix-class] Versioned Cluelessness

Ash Berlin ash_cpan at firemirror.com
Wed Jul 9 01:22:48 BST 2008


On 9 Jul 2008, at 01:13, luke saunders wrote:

> On Wed, Jul 9, 2008 at 12:54 AM, Christopher Laco  
> <claco at chrislaco.com> wrote:
>> Christopher Laco wrote:
>>>
>>> luke saunders wrote:
>>>>>>>
>>>>>>> NOTE: Since SQL::Translator 0.09000 it is better to just run all
>>>>>>> statmets
>>>>>>> in the order given, since the SQL produced is of better quality.
>>>>>
>>>>> Hmmm yeah, I briefly toyed with idea of removing that regexp  
>>>>> check and
>>>>> just
>>>>> running stmts the order that the appear in the SQL file,  
>>>>> probably for
>>>>> the
>>>>> exact reason you are complaining about.
>>>>>
>>>>> Is there anyone out there that is *using* this feature? If you  
>>>>> don't
>>>>> speak
>>>>> up soon I'll remove it.
>>>>
>>>> The version in svn will run the statements in the order they are in
>>>> the SQL file, but the method still exists if people want to  
>>>> override
>>>> it. I only changed this last week so it's not in a dev release yet.
>>>>
>>>>
>>>
>>> Just for the sake of asking..
>>>
>>> If I'm on version 1, and upgrade() is moving to version 3... will  
>>> it try
>>> to run the 1-2 file, then the 2-3 file... or will is always assume  
>>> a single
>>> 1-3 file?
>>
>> IS this an SQLite-ifact, or somethig wrong between the default  
>> AutoCommit
>> and the diff files?
>>
>>> claco at mbp ~/mvc-marathon/catalyst/BurningPlate $ script/*upgrade.pl
>>> dbi:SQLite:burning_plate.db
>>> Versions out of sync. This is 2, your database contains version 1,  
>>> please
>>> call upgrade on your Schema.
>>> DBIx::Class::Schema::Versioned::upgrade(): DBI Exception:  
>>> DBD::SQLite::db
>>> do failed: cannot start a transaction within a transaction(1) at  
>>> dbdimp.c
>>> line 402 [for Statement "BEGIN"]
>>
>> The diff files have tings wrapped in BEGIN/COMMIT, and I assume  
>> this on top
>> of the default transaction is the issue.
>
> Yeah, I've just added a change to Versioned.pm which should strip
> those BEGIN/COMMIT statements out. Ideally we'd have SQLT not generate
> them in the first place but I don't think that's going to happen
> before we release this. Anyway, if you could test the change that
> would be good.

Um no. SQLT *should* generate them, since almost every proper RBMS  
does transactional DDL (hell, even sqlite does it)

-ash



More information about the DBIx-Class mailing list