From: Carlos Guzm?n ?l. <car...@us...> - 2003-04-30 10:28:50
|
Update of /cvsroot/firebird/Net-Provider/source/NGDS In directory sc8-pr-cvs1:/tmp/cvs-serv11125 Modified Files: Tag: branch-release-1-1 GDS.cs XdrOutputStream.cs Log Message: Added changes for better handling of char datatype in array fields, varchar it's not finished yet. Index: GDS.cs =================================================================== RCS file: /cvsroot/firebird/Net-Provider/source/NGDS/GDS.cs,v retrieving revision 1.17.2.8 retrieving revision 1.17.2.9 diff -b -U3 -r1.17.2.8 -r1.17.2.9 --- GDS.cs 29 Apr 2003 10:18:25 -0000 1.17.2.8 +++ GDS.cs 30 Apr 2003 10:28:45 -0000 1.17.2.9 @@ -1602,7 +1602,7 @@ /// <include file='xmldoc/gds_array.xml' path='doc/member[@name="M:isc_array_put_slice(isc_db_handle,isc_tr_handle,System.Long,ISC_ARRAY_DESC,System.Array,System.Int32)"]/*'/> public long isc_array_put_slice(isc_db_handle db_handle, isc_tr_handle tr_handle, long array_id, ISC_ARRAY_DESC desc, System.Array source_array, - int slice_length) + int slice_length, Encoding encoding) { string sdl; @@ -1632,7 +1632,10 @@ db.Output.WriteInt(slice_length); // Slice length db.Output.WriteString(sdl); // Slice description language db.Output.WriteString(""); // Slice parameters - db.Output.WriteSlice(this, desc, source_array, slice_length); // Slice proper + db.Output.WriteSlice(this, desc, + source_array, + slice_length, + encoding); // Slice proper db.Output.Flush(); if (log != null) log.Debug("sent"); @@ -2133,6 +2136,12 @@ byte[] dest_slice = new byte[slice_length]; System.Array.Copy(src_slice, 4, dest_slice, 0, slice_length); + + if (log != null) + { + log.Debug("received"); + checkAllRead(db.Input); //DEBUG + } return dest_slice; } Index: XdrOutputStream.cs =================================================================== RCS file: /cvsroot/firebird/Net-Provider/source/NGDS/XdrOutputStream.cs,v retrieving revision 1.4.2.2 retrieving revision 1.4.2.3 diff -b -U3 -r1.4.2.2 -r1.4.2.3 --- XdrOutputStream.cs 29 Apr 2003 09:43:28 -0000 1.4.2.2 +++ XdrOutputStream.cs 30 Apr 2003 10:28:45 -0000 1.4.2.3 @@ -123,7 +123,7 @@ } #warning "Give suport for decimal and date & time data types" - public void WriteSlice(IGDS gds, ISC_ARRAY_DESC desc, System.Array source_array, int len) + public void WriteSlice(IGDS gds, ISC_ARRAY_DESC desc, System.Array source_array, int len, Encoding encoding) { IEnumerator i = source_array.GetEnumerator(); @@ -137,17 +137,25 @@ case GdsCodes.blr_text2: case GdsCodes.blr_cstring: case GdsCodes.blr_cstring2: + { // Char - WriteString((string)i.Current); + WriteOpaque(encoding.GetBytes((string)i.Current), + encoding.GetByteCount((string)i.Current)); + } break; case GdsCodes.blr_varying: case GdsCodes.blr_varying2: - // VarChar - WriteString((string)i.Current); + { + WriteInt(encoding.GetByteCount((string)i.Current)); + WriteOpaque(encoding.GetBytes((string)i.Current), + encoding.GetByteCount((string)i.Current)); + + } break; case GdsCodes.blr_short: + { // Short/Smallint if (desc.array_desc_scale < 0) { @@ -156,9 +164,11 @@ { WriteShort((short)i.Current); } + } break; case GdsCodes.blr_long: + { // Integer if (desc.array_desc_scale < 0) { @@ -167,21 +177,27 @@ { WriteInt((int)i.Current); } + } break; case GdsCodes.blr_float: + { // Float WriteFloat((float)i.Current); + } break; case GdsCodes.blr_double: case GdsCodes.blr_d_float: + { // Double WriteDouble((double)i.Current); + } break; case GdsCodes.blr_quad: case GdsCodes.blr_int64: + { // Long/Quad if (desc.array_desc_scale < 0) { @@ -190,22 +206,29 @@ { WriteLong((long)i.Current); } + } break; case GdsCodes.blr_timestamp: + { // TimeStamp WriteInt(gds.EncodeDate((DateTime)i.Current)); // Date WriteInt(gds.EncodeTime((DateTime)i.Current)); // Time + } break; case GdsCodes.blr_sql_time: + { // Time WriteInt(gds.EncodeTime((DateTime)i.Current)); + } break; case GdsCodes.blr_sql_date: + { // Date WriteInt(gds.EncodeDate((DateTime)i.Current)); + } break; default: |