It would only happen if the ora_auto_lob attribute has been explicitly set false. See the docs.
Alas, I am not setting the ora_auto_lob attribute. according to the docs, this needs to be set on prepare. I'm calling selectrow_array (and selectrow_hashref), which take a hash of possible attributes, the same as those that would be passed to the prepare call, but I'm passing the empty hash in both cases. Here are my calls:
my $sql = q[
select d.*,
TO_CHAR(d.postdate, 'Day Month DD, YYYY @ HH12:MI am') postdate
from sk2_discussion d
where d.PostCode = ?
];
my $data = $dbh->selectrow_hashref($sql, {}, $postcode);and:
my $parentmessage = $dbh->selectrow_array(q[
select body
from sk2_discussion
where PostCode = ?
], {}, $parentcode);Neither of these sets ora_auto_lob at all. Unfortunately, this doesn't happen on my test machines, only on my client's, and not every time.
I tried looking at DBD/Oracle.pm to see how the OCILobLocatorPtr was being decoded. Unfortunately (for me,) it's all in XS, so I can't tell.
Is there some way I can get more information about what is happening behind the scenes? I tried printing out $dbh->errstr when this occurs, but I get nothing.
Also, this only occurs when pulling from one specific table. Perhaps there's something messed up in the database, but I don't know enough about the inner workings of CLOBs to figure what it could be.
--Sean McMillan
