[Mono-dev] OdbcDataReader enhancement
Veerapuram Varadhan
vvaradhan at novell.com
Thu Jul 10 10:11:25 EDT 2008
On Thu, 2008-07-10 at 09:46 -0300, Ernesto wrote:
> I'm not familiarized with the mono test suite, but this is what I get
> when I run make run-test-local in mcs/class/System.Data
>
> Tests run: 1498 (all pass), Not run: 11, Time: 112,014661 seconds
>
Are you running trunk? If so, it should read something like:
Tests run: 1855 (all pass), Not run: 13 etc...
Other than that patch looks good to me.
Thanks,
V. Varadhan
> Looks ok to me.
>
> Regards,
> Ernesto
>
> Nagappan A escribió:
> > Hello Ernesto,
> >
> > I appreciate your work :) The value of _dataTableSchema is not being
> > used anywhere, though its been filled each time. Good catch !
> >
> > Could you please try running the unit test too and make sure it
> > doesn't break existing test cases.
> >
> > Thanks
> > Nagappan
> >
> > 2008/7/8 Ernesto <equistango at gmail.com <mailto:equistango at gmail.com>>:
> >
> >
> > Hi, I was taking a look at OdbcDataReader.cs and found something
> > that got my attention: a call to GetSchemaTable() in the class'
> > constructor.
> >
> > The DataReader is supposed to be a very fast reader for
> > forward-only queries, and getting complete schema information on
> > every DataReader is a very expensive (and unsolicited) operation.
> > The call seems completely unnecesary to me. Only column
> > information is necessary.
> >
> > This patch replaces two calls to GetSchemaTable() for calls to a
> > new function GetColumns().
> > It works perfectly in my tests and it's way much faster. Can
> > someone please review and comment?
> >
> > Regards,
> > Ernesto
> >
> >
> > Index: OdbcDataReader.cs
> > ===================================================================
> > --- OdbcDataReader.cs (revision 107477)
> > +++ OdbcDataReader.cs (working copy)
> > @@ -75,7 +75,7 @@
> > short colcount = 0;
> > libodbc.SQLNumResultCols (hstmt, ref colcount);
> > cols = new OdbcColumn [colcount];
> > - GetSchemaTable ();
> > + GetColumns ();
> > }
> >
> > internal OdbcDataReader (OdbcCommand command,
> > CommandBehavior behavior,
> > @@ -225,6 +225,13 @@
> > }
> > return cols [ordinal];
> > }
> > +
> > + // Load all column descriptions
> > + private void GetColumns ()
> > + {
> > + for(int i = 0; i < cols.Length; i++)
> > + GetColumn (i);
> > + }
> >
> > public
> > #if NET_2_0
> > @@ -913,7 +920,7 @@
> > libodbc.SQLNumResultCols (hstmt,
> > ref colcount);
> > cols = new OdbcColumn [colcount];
> > _dataTableSchema = null; // force
> > fresh creation
> > - GetSchemaTable ();
> > + GetColumns ();
> > }
> > return (ret == OdbcReturn.Success);
> > }
> >
> >
> >
> > _______________________________________________
> > Mono-devel-list mailing list
> > Mono-devel-list at lists.ximian.com
> > <mailto:Mono-devel-list at lists.ximian.com>
> > http://lists.ximian.com/mailman/listinfo/mono-devel-list
> >
> >
> >
> >
> > --
> > Linux Desktop (GUI Application) Testing Project -
> > http://ldtp.freedesktop.org
> > http://nagappanal.blogspot.com
>
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
More information about the Mono-devel-list
mailing list