Update of /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient
In directory sc8-pr-cvs1:/tmp/cvs-serv26115
Modified Files:
PgStatement.cs
Log Message:
Updated file
Index: PgStatement.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient/PgStatement.cs,v
retrieving revision 1.20
retrieving revision 1.21
diff -C2 -d -r1.20 -r1.21
*** PgStatement.cs 18 Dec 2003 10:27:32 -0000 1.20
--- PgStatement.cs 3 Jan 2004 15:43:07 -0000 1.21
***************
*** 33,36 ****
--- 33,37 ----
Binded,
Executed,
+ OnQuery,
Error
}
***************
*** 430,433 ****
--- 431,436 ----
public void Query()
{
+ ArrayList innerRows = new ArrayList();
+
lock (db)
{
***************
*** 441,444 ****
--- 444,453 ----
db.SendData(packet.GetPacketBytes(PgFrontEndCodes.QUERY));
+ // Update Status
+ this.status = PgStatementStatus.OnQuery;
+
+ // Set fetch size
+ this.fetchSize = 1;
+
// Receive response
PgResponsePacket response = new PgResponsePacket();
***************
*** 447,451 ****
--- 456,482 ----
response = db.ReceiveResponsePacket();
processSqlPacket(response);
+
+ if (this.hasRows &&
+ response.Message == PgBackendCodes.DATAROW)
+ {
+ innerRows.Add(this.rows[0]);
+ this.rowIndex = 0;
+ }
}
+
+ if (this.hasRows)
+ {
+ // Obtain all the rows
+ this.rows = (object[])innerRows.ToArray(typeof(object));
+
+ // reset rowIndex
+ this.rowIndex = 0;
+
+ // Set allRowsFetched flag
+ this.allRowsFetched = true;
+ }
+
+ // reset fetch size
+ this.fetchSize = 200;
// Update status
***************
*** 487,490 ****
--- 518,522 ----
if (this.rows != null &&
(this.rowIndex >= this.fetchSize ||
+ this.rowIndex >= this.rows.Length ||
this.rows[this.rowIndex] == null))
{
***************
*** 720,726 ****
default:
! values[i] = packet.ReadValue(
! rowDescriptor.Fields[i].DataType,
! length);
break;
}
--- 752,767 ----
default:
! if (this.status == PgStatementStatus.OnQuery)
! {
! values[i] = packet.ReadValueFromString(
! rowDescriptor.Fields[i].DataType,
! length);
! }
! else
! {
! values[i] = packet.ReadValue(
! rowDescriptor.Fields[i].DataType,
! length);
! }
break;
}
|