http://www.mediawiki.org/wiki/Special:Code/MediaWiki/76383

Revision: 76383
Author:   freakolowsky
Date:     2010-11-09 08:56:15 +0000 (Tue, 09 Nov 2010)
Log Message:
-----------
* BLOB temporary handling
* en/decodeBlob

Modified Paths:
--------------
    trunk/phase3/includes/db/DatabaseOracle.php

Modified: trunk/phase3/includes/db/DatabaseOracle.php
===================================================================
--- trunk/phase3/includes/db/DatabaseOracle.php 2010-11-09 08:07:43 UTC (rev 
76382)
+++ trunk/phase3/includes/db/DatabaseOracle.php 2010-11-09 08:56:15 UTC (rev 
76383)
@@ -534,7 +534,7 @@
                                // do nothing ... null was inserted in 
statement creation
                        } elseif ( $col_type != 'BLOB' && $col_type != 'CLOB' ) 
{
                                if ( is_object( $val ) ) {
-                                       $val = $val->getData();
+                                       $val = $val->fetch();
                                }
 
                                if ( preg_match( '/^timestamp.*/i', $col_type ) 
== 1 && strtolower( $val ) == 'infinity' ) {
@@ -553,11 +553,15 @@
                                        throw new DBUnexpectedError( $this, 
"Cannot create LOB descriptor: " . $e['message'] );
                                }
 
+                               if ( is_object( $val ) ) {
+                                       $val = $val->fetch();
+                               }
+
                                if ( $col_type == 'BLOB' ) {
-                                       $lob[$col]->writeTemporary( $val );
-                                       oci_bind_by_name( $stmt, ":$col", 
$lob[$col], - 1, SQLT_BLOB );
+                                       $lob[$col]->writeTemporary( $val, 
OCI_TEMP_BLOB );
+                                       oci_bind_by_name( $stmt, ":$col", 
$lob[$col], - 1, OCI_B_BLOB );
                                } else {
-                                       $lob[$col]->writeTemporary( $val );
+                                       $lob[$col]->writeTemporary( $val, 
OCI_TEMP_CLOB );
                                        oci_bind_by_name( $stmt, ":$col", 
$lob[$col], - 1, OCI_B_CLOB );
                                }
                        }
@@ -812,6 +816,17 @@
                return "SELECT * FROM ($sql) WHERE rownum >= (1 + $offset) AND 
rownum < (1 + $limit + $offset)";
        }
 
+       function encodeBlob( $b ) {
+               return new Blob( $b );
+       }
+
+       function decodeBlob( $b ) {
+               if ( $b instanceof Blob ) {
+                       $b = $b->fetch();
+               }
+               return $b;
+       }
+
        function unionQueries( $sqls, $all ) {
                $glue = ' UNION ALL ';
                return 'SELECT * ' . ( $all ? '':'/* UNION_UNIQUE */ ' ) . 
'FROM (' . implode( $glue, $sqls ) . ')' ;


_______________________________________________
MediaWiki-CVS mailing list
MediaWiki-CVS@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to