[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);
}
|