Robert, Jaccob you two nailed it.  Thanks a bunch.
It's subtle, the difference between a list and an array
especially with a perl background.

Thanks!

Andy



Jacob Fugal wrote:
> On 10/30/06, Andrew Libby <alibby / tangeis.com> wrote:
>> I come from a Perl DBI and JDBC world, and would like to use
>> prepared statements. So I've gotten the underlying Mysql
>> connection (using ActiveRecord::Base.connection.raw_connection).
> 
> My guess is that prepared statements are indeed the source of your
> performance problems. IIRC, ActiveRecord does not cache prepared
> statements by default (and if there's an option for it, I do not know
> of it) so you're essentially calling prepare once for each INSERT! For
> most Rails applications this is a space for improvement but not a show
> stopper. For importing loads of data, it's simply unacceptable.
> 
>> When I have code like
>>
>> stmt = conn.prepare(%Q/
>>         INSERT INTO sometable (t1,t2,t3,t4)
>>         VALUES (?,?,?,?)
>> /)
>>
>> bind_params = [1,2,3,4]
>>
>> stmt.execute(bind_params)
>>
>> I get an error on the execute statement.  It claims I need
>> to send it 4 parameters.
> 
> Unlike in perl (which I'm assuming you're used to from the symptoms
> here), arrays and lists are not *quite* the same thing in Ruby. When
> you call stmt.execute(bind_params), you are not passing a list of four
> parameters to execute (as you might expect), but just one parameter
> that is an array. Fortunately, Ruby does provide a mechanism for
> "splatting" an array into a list of parameters:
> 
>  stmt.execute(*bind_params) # note the star
> 
> Let us know if this takes care of it for you!
> 
> Jacob Fugal
> 

-- 
Andrew Libby
Tangeis, LLC
Innovative IT Management Solutions
alibby / tangeis.com