The following patch was submitted on the SF bugtracker:
http://sourceforge.net/tracker/index.php?func=detail&aid=2308998&group_id=681&atid=100681

--------------------------------------------
[PATCH] hbmysql use byte size instead of char lenght

every multibyte charachter is stored in 3 byte by MySQL, for it's operation
harbour should use the char lenght instead.
diff -Naur harbour/contrib/hbmysql.orig/tmysql.prg
harbour/contrib/hbmysql/tmysql.prg
--- harbour/contrib/hbmysql.orig/tmysql.prg 2008-11-06
15:21:07.000000000 +0100
+++ harbour/contrib/hbmysql/tmysql.prg 2008-11-13 19:46:37.000000000
+0100
@@ -122,7 +122,7 @@
// Char fields are padded with spaces since a real .dbf field would be
if ::FieldType(nNum) == "C"
- return PadR(::aRow[nNum], ::aFieldStruct[nNum][MYSQL_FS_LENGTH])
+ return PadR(::aRow[nNum], ::aFieldStruct[nNum][MYSQL_FS_MAXLEN])
else
return ::aRow[nNum]
endif
@@ -176,7 +176,7 @@
METHOD FieldLen(nNum) CLASS TMySQLRow
-return iif( nNum >=1 .AND. nNum <= Len(::aFieldStruct),
::aFieldStruct[nNum][MYSQL_FS_LENGTH], 0 )
+return iif( nNum >=1 .AND. nNum <= Len(::aFieldStruct),
::aFieldStruct[nNum][MYSQL_FS_MAXLEN], 0 )
METHOD FieldDec(nNum) CLASS TMySQLRow
@@ -674,7 +674,7 @@
// Char fields are padded with spaces since a real .dbf field would be
if ::FieldType(nNum) == "C"
- return PadR(Value,::aFieldStruct[nNum][MYSQL_FS_LENGTH])
+ return PadR(Value,::aFieldStruct[nNum][MYSQL_FS_MAXLEN])
else
return Value
endif
@@ -687,7 +687,7 @@
METHOD FieldLen(nNum) CLASS TMySQLQuery
if nNum >=1 .AND. nNum <= Len(::aFieldStruct)
- return ::aFieldStruct[nNum][MYSQL_FS_LENGTH]
+ return ::aFieldStruct[nNum][MYSQL_FS_MAXLEN]
endif
return 0
--------------------------------------------

Have no idea if this patch is correct or not.

  Chen.
_______________________________________________
Harbour mailing list
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to