l i n u x - u s e r s - g r o u p - o f - d a v i s
Next Meeting:
July 7: Social gathering
Next Installfest:
Latest News:
Jun. 14: June LUGOD meeting cancelled
Page last updated:
2001 Dec 30 17:04

The following is an archive of a post made to our 'vox-tech mailing list' by one of its subscribers.

Report this post as spam:

(Enter your email address)
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

LUGOD Group on LinkedIn
Sign up for LUGOD event announcements
Your email address:
LUGOD Group on Facebook
'Like' LUGOD on Facebook:

Hosting provided by:
Sunset Systems
Sunset Systems offers preconfigured Linux systems, remote system administration and custom software development.

LUGOD: Linux Users' Group of Davis
PO Box 2082, Davis, CA 95617
Contact Us

LUGOD is a 501(c)7 non-profit organization
based in Davis, California
and serving the Sacramento area.
"Linux" is a trademark of Linus Torvalds.

Sponsored in part by:
Appahost Applications
For a significant contribution towards our projector, and a generous donation to allow us to continue meeting at the Davis Library.