Bug ID: 62098
           Summary: LCStoreDB not working on postgres due to \0
           Product: MediaWiki
           Version: 1.23-git
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: Unprioritized
         Component: Database
            Blocks: 384
       Web browser: ---
   Mobile Platform: ---

LCStoreDB has a problem under postgres.

The lc_key 'deps' contains objects which will be serialized and than there are
\0 in the serialized string, but for postgres a \0 is end of input stream, this
means the lc_value for deps is cut of at the first \0, which breaks unserialize
when getting this value back.

The insert row is ([...] is a placeholder to make it shorter):
array (
  'lc_lang' => 'de',
  'lc_key' => 'deps',
  'lc_value' => 'a:9:{i:0;O:14:"FileDependency":2:{s:24:"' . "\0" .
'FileDependency' . "\0" . 'filename";s:110:[...];i:2;}}',

INSERT /* LCStoreDB::set  */ INTO "l10n_cache" (lc_lang,lc_key,lc_value) VALUES

Reading on the internet, the only chance here is to use bytea, which can be
done by using Database::decodeBlob and Database::encodeBlob. Than the \0 is
changed to \000, but I didnot know, if oracle and sqlite still will work than.

Maybe there is another solution.

You are receiving this mail because:
You are the assignee for the bug.
You are on the CC list for the bug.
Wikibugs-l mailing list

Reply via email to