1) the versions of DBI and ODBC are the same on Windows and AIX 2) the program is identical on Windows and AIX. I develop on Windows and move to AIX for production. The two output fragments are from an identical call to the same stored procedure on the same database with the same parameters 3) the dumper output is nested in memory. The SP returns variant record types in a common column set (sorry, I have been saying tags for what are actually columns in the result set) and I have to juggle and nest them as I can't do the value-added work till I have all records returned. The actual columns returned are the hash that starts with 'Adjusted_Fiscal_Year' => ' ' (I have removed certain sensitive data) 4) the leading => marks inside dumper are my addition, to indicate which column names differ between the two environments. 5) I am happy to share the code, but I am not sure what to send. At the point that these hashes are created, all that has run is the 'dbi->connect' and the 'sth->fetchrow_hashref' loop 6) the SP itself does a lot of complicated filters, case statements, joins across a very large set of transaction records.
7) not sure what you mean by a reproducible problem - it happens every time I run the program in the pair of environments, but I'm sure that's not what you mean. Thanx -----Original Message----- From: Martin J. Evans [mailto:martin.ev...@easysoft.com] Sent: Wednesday, September 28, 2011 4:51 PM To: dbi-users@perl.org Cc: Jeff Tate Subject: Re: Strange happenings in ODBC On 28/09/2011 21:07, Jeff Tate wrote: > Thanx for the offer. What additional information would aid you in aiding me? > (PS - did the attachment make it through - it showed the specific tag > sets (columns really) returned. > > Jeff Tate Jeff, please keep things on list as other might have input too. Can you confirm each of the following: o you are using the same version of DBI and DBD::ODBC on Windows and AIX? o you are calling a procedure in the same database from each platform with the same arguments o the procedure issues the same select from AIX and Windows o the data being queried has not changed between the call to the procedure from AIX and Windows o you are getting different result-sets on each platform Then I have an issue with the Dumper output you sent as it has it is not of the form you'd typically get back from a database i.e., it is a hashref whose keys are hashrefs whose keys are hashrefs whose keys are hashrefs whose keys are values. How can this be when a result-set has rows and columns (2): # # Windows ODBC # $VAR1 = { 'SUMMARY' => { '2' => { '0004' => { 'Adjusted_Fiscal_Year' => ' ', Can you show us the Perl code your running, give us some idea of the procedure (what it does and what you expect it to return or cursors it opens) and what you passed to Dumper. Then there is: '0004' => { 'Adjusted_Fiscal_Year' => ' ', 'Adjustment_Count' => '3', 'Billing_Provider_ID' => '', 'Billing_Provider_Type' => '', 'CLAIM_LINE_TCN' => '', 'COUNTY_NAME' => 'KALAMAZOO', 'City' => 'KALAMAZOO', 'Credit_Dollars' => '0.00', 'Debit_Dollars' => '2515.23', 'EMailAddress' => undef, 'FAX' => undef, 'Fiscal_Years' => '2010-2011', 'GA_MIP_Total' => '0.00', 'GA_Non_MIP_Total' => '0.00', 'GA_Reason' => 'Old Invoices', 'GA_Total' => '0.00', 'Indx' => ' ', => 'LCTN_CODE' => '03', => 'PAY_ORDER_DATE' => '2011-09-22', which does not even seem to be valid Data::Dumper output to me. Also you keep referring to tags and I've no idea what you mean by that. Can you reduce the problem and describe it in a way which I/we can help you? That is, reduce the problem to something we don't need inside knowledge to understand and even better into a reproducible problem (although I appreciate this can be difficult and I've not got teradata anyway). Martin > -----Original Message----- > From: Martin J. Evans [mailto:martin.ev...@easysoft.com] > Sent: Wednesday, September 28, 2011 3:50 PM > To: Jeff Tate > Cc: dbi-users@perl.org > Subject: Re: Strange happenings in ODBC > > On 28/09/2011 20:41, Jeff Tate wrote: >> I am developing an app that pulls data from a Teradata data-server >> through > DBI, DBD::ODBC. It is developed on a Win32 platform, but targeted for > an AIX platform. >> In debugging a difference between the two platforms (after rigorous >> code > identity policing) I used Data::Dumper to print the in-memory image of > the working data after running a stored procedure and then running > 'fetchrow_hashref'. I have attached an edited file that shows: >> .One tag retrieved only on AIX >> >> .Two tags named differently across the Win and AIX instances >> >> I have looked at obvious sources and not seen any warnings about >> this. Can > anybody tell me if this is a known issue, and if so whether there is a > canonical way of handling it. >> Thanx >> >> > I'm maintain DBD::ODBC and I'm happy to try and help but with all > respect I don't even know where to start with the information you have > provided. You are calling a procedure which generates some sort of > result-set and it returns different results when run to the same > database with 2 different ODBC drivers on Windows and AIX at the same > time? The possibilities are endless. If you care to narrow the problem > down to something more specific someone who knows nothing about your > systems can look in to I'll take another look. > > Martin >