[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    Re: extragear/multimedia/amarok
From:       "Andrew Turner" <andrewturner512 () googlemail ! com>
Date:       2006-08-06 18:30:44
Message-ID: e885a6440608061130l659b7046s57f0eb395053d2d1 () mail ! gmail ! com
[Download RAW message or body]

Martin,

Extending the size of the exactTextTypecolumn from 255 to 1024
characters unfortunately breaks compatibility with MySQL < 5.0.3:

http://dev.mysql.com/doc/refman/5.1/en/binary-varbinary.html states:
"The allowable maximum length is the same for BINARY and VARBINARY as
it is for CHAR and VARCHAR, except that the length for BINARY and
VARBINARY is a length in bytes rather than in characters."

http://dev.mysql.com/doc/refman/5.0/en/char.html continues:
"Values in VARCHAR columns are variable-length strings. The length can
be specified as a value from 0 to 255 before MySQL 5.0.3, and 0 to
65,535 in 5.0.3 and later versions. (The maximum effective length of a
VARCHAR in MySQL 5.0.3 and later is determined by the maximum row size
and the character set used. The maximum length overall is 65,532
bytes.)"

You could possibly use a BLOB instead, but creating indexes on a BLOB
requires extra effort:
http://dev.mysql.com/doc/refman/5.1/en/blob.html

Andrew

On 05/08/06, Martin Aumüller <aumuell@reserv.at> wrote:
> SVN commit 570151 by aumuell:
> 
> - make comment field a long text to accomodate the full length of id3v2 comments
> - extend exact text default size to 1024 characters as this is the PATH_MAX limit \
>                 on linux systems
> BUG: 130585
> CCBUG: 119720
> 
> 
> M  +1 -0      ChangeLog
> M  +1 -1      src/collectiondb.cpp
> M  +2 -2      src/collectiondb.h
> 
> 
> --- trunk/extragear/multimedia/amarok/ChangeLog #570150:570151
> @@ -34,6 +34,7 @@
> to iTunes, Firefly Media Server etc. (BR 100513)
> 
> CHANGES:
> +    * Lift size limit on pathnames and comments in collection db. (BR 130585)
> * Generic mediadevice plugin is improved. Users can configure supported
> filetypes and get more control over the location of songs and podcasts on disk
> (Patch by eute).
> --- trunk/extragear/multimedia/amarok/src/collectiondb.cpp #570150:570151
> @@ -561,7 +561,7 @@
> "genre INTEGER,"
> "title " + textColumnType() + ","
> "year INTEGER,"
> -                    "comment " + textColumnType() + ","
> +                    "comment " + longTextColumnType() + ","
> "track NUMERIC(4),"
> "discnumber INTEGER,"
> "bitrate INTEGER,"
> --- trunk/extragear/multimedia/amarok/src/collectiondb.h #570150:570151
> @@ -247,7 +247,7 @@
> //exactTextColumnType should be used for strings that must be stored exactly, such
> //as URLs (necessary for holding control chars etc. if present in URL), except for
> //trailing spaces. Comparisions should always be done case-sensitively.
> -        QString exactTextColumnType( int length=255 ) const { if ( \
> getDbConnectionType() == DbConnection::mysql ) return QString( "VARBINARY(%1)" \
> ).arg( length ); else return textColumnType( length ); } +        QString \
> exactTextColumnType( int length=1024 ) const { if ( getDbConnectionType() == \
> DbConnection::mysql ) return QString( "VARBINARY(%1)" ).arg( length ); else return \
> textColumnType( length ); } // We might consider using LONGTEXT type, as some \
> lyrics could be VERY long..??? QString longTextColumnType() const { if ( \
> getDbConnectionType() == DbConnection::postgresql ) return "TEXT"; else return \
> "TEXT"; } QString randomFunc() const { if ( getDbConnectionType() == \
> DbConnection::postgresql ) return "random()"; else return "RAND()"; } @@ -485,7 \
> +485,7 @@ private:
> //bump DATABASE_VERSION whenever changes to the table structure are made.
> // This erases tags, album, artist, composer, genre, year, images, embed, directory \
>                 and related_artists tables.
> -        static const int DATABASE_VERSION = 32;
> +        static const int DATABASE_VERSION = 33;
> // Persistent Tables hold data that is somehow valuable to the user, and can't be \
> erased when rescaning. // When bumping this, write code to convert the data!
> static const int DATABASE_PERSISTENT_TABLES_VERSION = 14;
> 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic