[pgsqlclient-checkins] pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient PgDbClient.cs,1.1
Status: Inactive
Brought to you by:
carlosga_fb
From: <car...@us...> - 2003-09-21 22:35:26
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient In directory sc8-pr-cvs1:/tmp/cvs-serv31902 Modified Files: PgDbClient.cs PgStatement.cs Log Message: * source/NPgClient/PgStatement.cs: * Added row fetching in groups of 200 rows. * Cleanup. Index: PgDbClient.cs =================================================================== RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient/PgDbClient.cs,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** PgDbClient.cs 19 Sep 2003 17:04:39 -0000 1.16 --- PgDbClient.cs 21 Sep 2003 22:35:21 -0000 1.17 *************** *** 670,673 **** --- 670,674 ---- types.Add(1005 , "_int2" , DbType.Object , Type.GetType("System.Array") , 21, 1, 2, false); types.Add(1007 , "_int4" , DbType.Object , Type.GetType("System.Array") , 23, 1, 4, false); + types.Add(1016 , "_int8" , DbType.Object , Type.GetType("System.Array") , 20, 1, 8, false); types.Add(1009 , "_text" , DbType.Object , Type.GetType("System.Array") , 25, 1, 0, false); types.Add(1021 , "_float4" , DbType.Object , Type.GetType("System.Array") , 700, 1, 4, false); Index: PgStatement.cs =================================================================== RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient/PgStatement.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** PgStatement.cs 19 Sep 2003 17:04:39 -0000 1.7 --- PgStatement.cs 21 Sep 2003 22:35:21 -0000 1.8 *************** *** 49,52 **** --- 49,54 ---- private string parseName; private string portalName; + private int fetchSize; + private bool allRowsFetched; private PgRowDescriptor rowDescriptor; private ArrayList rows; *************** *** 76,80 **** { get { return hasRows; } - set { hasRows = value; } } --- 78,81 ---- *************** *** 82,86 **** { get { return tag; } - set { tag = value; } } --- 83,86 ---- *************** *** 145,148 **** --- 145,149 ---- this.recordsAffected = -1; this.status = PgStatementStatus.Initial; + this.fetchSize = 200; } *************** *** 346,350 **** packet.WriteString(PortalName); ! packet.WriteInt(0); // Rows to retrieve ( 0 = nolimit ) // Send packet to the server --- 347,351 ---- packet.WriteString(PortalName); ! packet.WriteInt(fetchSize); // Rows to retrieve ( 0 = nolimit ) // Send packet to the server *************** *** 352,365 **** // Sync server and client ! db.Sync(); // Receive response PgResponsePacket response = new PgResponsePacket(); ! while (response.Message != PgBackendCodes.READY_FOR_QUERY) { response = db.ReceiveResponsePacket(); ! processSqlPacket(response); } ! // Update status this.status = PgStatementStatus.Executed; --- 353,387 ---- // Sync server and client ! db.Flush(); // Receive response PgResponsePacket response = new PgResponsePacket(); ! while (response.Message != PgBackendCodes.READY_FOR_QUERY && ! response.Message != PgBackendCodes.PORTAL_SUSPENDED && ! response.Message != PgBackendCodes.COMMAND_COMPLETE) { response = db.ReceiveResponsePacket(); ! processSqlPacket(response); } ! ! // If the command is finished and has returned rows ! // set all rows are received ! if ((response.Message == PgBackendCodes.READY_FOR_QUERY || ! response.Message == PgBackendCodes.COMMAND_COMPLETE) && ! this.hasRows) ! { ! this.allRowsFetched = true; ! } ! ! // If all rows are received or the command doesn't return ! // rows perform a Sync. ! if (!this.hasRows || this.allRowsFetched) ! { ! db.Sync(); ! ! response = db.ReceiveResponsePacket(); ! processSqlPacket(response); ! } ! // Update status this.status = PgStatementStatus.Executed; *************** *** 465,483 **** object[] row = null; ! lock (this) { ! // Retrieve row ! if (rows.Count == 0) { ! row = null; } ! else ! { ! // Return always first row ! row = (object[])rows[0]; ! // Remove row from the list ! rows.RemoveAt(0); ! } } --- 487,506 ---- object[] row = null; ! if (!this.allRowsFetched && this.rows.Count == 0) { ! lock (this) { ! // Retrieve next group of rows ! this.Execute(); } ! } ! ! if (rows.Count > 0) ! { ! // Return always first row ! row = (object[])this.rows[0]; ! // Remove row from the list ! this.rows.RemoveAt(0); } *************** *** 599,603 **** case PgBackendCodes.DATAROW: ! HasRows = true; processDataRow(packet); break; --- 622,626 ---- case PgBackendCodes.DATAROW: ! this.hasRows = true; processDataRow(packet); break; *************** *** 605,609 **** case PgBackendCodes.EMPTY_QUERY_RESPONSE: case PgBackendCodes.NODATA: ! HasRows = false; break; --- 628,632 ---- case PgBackendCodes.EMPTY_QUERY_RESPONSE: case PgBackendCodes.NODATA: ! this.hasRows = false; break; *************** *** 715,719 **** } ! Rows.Add(values); } --- 738,742 ---- } ! this.rows.Add(values); } |