[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