Re: [vox-tech] Perl question, DBI - Why no selectcol_array method?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [vox-tech] Perl question, DBI - Why no selectcol_array method?
On Sun, 29 Apr 2001, Micah Cowan wrote:
> On Fri, Apr 27, 2001 at 05:34:08PM -0700, jdnewmil@dcn.davis.ca.us wrote:
> > On Fri, 27 Apr 2001, Micah Cowan wrote:
> >
> > > On Fri, Apr 27, 2001 at 03:28:58PM -0500, Jay Strauss wrote:
> > > > In DBI there is:
> > > >
> > > > $ary_ref = $dbh->selectrow_arrayref($statement);
> > > > @row_ary = $dbh->selectrow_array($statement);
> > > >
> > > > but only
> > > >
> > > > $ary_ref = $dbh->selectcol_arrayref($statement);
> > > >
> > > > Why??? (i.e why no @col_ary = $dbh->selectcol_array($statement))
> > >
> > > Dunno. You'll have to ask the author :)
> >
> > I think this would encourage inefficient programming constructs, because
> > such a function would imply a complete iteration through all the rows and
> > columns while ignoring all but one. It is more efficient to use a query
> > that only returns the single column you are interested in.
>
> I don't think it would imply that at all. Whether it returns a list,
> or a reference to an array, it still does the same iteration. If
> something can return a reference to a (newly constructed) array, one
> could certainly return a list of values just as easy. Or did I
> misunderstand you?
No, I misunderstood the semantics of selectcol_arrayref. I thought it was
returning a reference to an array of references to row arrays.
I would avoid using selectcol_arrayref with a select statement that has
more than one result column.
> It might be that it was done this way to eliminate a copy of the list
> created by this method into the return value, but I really don't know
> anything about the DBI (or Perl) internals, so I really can't say.
Well, it is one thing to build in a copy of an array with a few tens of
elements, but the column could have thousands of elements. Avoiding a
copy makes sense to me.
---------------------------------------------------------------------------
Jeff Newmiller The ..... ..... Go Live...
DCN:<jdnewmil@dcn.davis.ca.us> Basics: ##.#. ##.#. Live Go...
Work:<JeffN@endecon.com> Live: OO#.. Dead: OO#.. Playing
Research Engineer (Solar/Batteries O.O#. #.O#. with
/Software/Embedded Controllers) .OO#. .OO#. rocks...2k
---------------------------------------------------------------------------
|