diff options
author | Olivier Bertrand <bertrandop@gmail.com> | 2013-01-31 22:55:56 +0100 |
---|---|---|
committer | Olivier Bertrand <bertrandop@gmail.com> | 2013-01-31 22:55:56 +0100 |
commit | 627d046df53be05655970362df6167e10c41e418 (patch) | |
tree | 349677c52def536adf00827d9f2e7f611bc04917 /storage/connect/filamdbf.cpp | |
parent | e8c24a7374651c4e9c6122846a205b70abbfb077 (diff) | |
download | mariadb-git-627d046df53be05655970362df6167e10c41e418.tar.gz |
DBF type N is now BIGINT when length is > 10.
Fix ha_connect::external_lock to use F_RDLCK, F_WRLCK, F_UNLCK.
Diffstat (limited to 'storage/connect/filamdbf.cpp')
-rw-r--r-- | storage/connect/filamdbf.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/storage/connect/filamdbf.cpp b/storage/connect/filamdbf.cpp index f8059066ac0..26cf33d9c71 100644 --- a/storage/connect/filamdbf.cpp +++ b/storage/connect/filamdbf.cpp @@ -194,7 +194,7 @@ PQRYRES DBFColumns(PGLOBAL g, char *fn, BOOL info) static unsigned int length[] = {11, 6, 8, 10, 10, 6};
char buf[2], filename[_MAX_PATH];
int ncol = sizeof(dbtype) / sizeof(int);
- int rc, type, field, fields;
+ int rc, type, len, field, fields;
BOOL bad;
DBFHEADER mainhead;
DESCRIPTOR thisfield;
@@ -260,11 +260,12 @@ PQRYRES DBFColumns(PGLOBAL g, char *fn, BOOL info) if (fread(&thisfield, HEADLEN, 1, infile) != 1) {
sprintf(g->Message, MSG(ERR_READING_REC), field+1, fn);
goto err;
- } // endif fread
+ } else
+ len = thisfield.Length;
if (trace)
htrc("%-11s %c %6ld %3d %2d %3d %3d\n",
- thisfield.Name, thisfield.Type, thisfield.Offset, thisfield.Length,
+ thisfield.Name, thisfield.Type, thisfield.Offset, len,
thisfield.Decimals, thisfield.Setfield, thisfield.Mdxfield);
/************************************************************************/
@@ -276,7 +277,8 @@ PQRYRES DBFColumns(PGLOBAL g, char *fn, BOOL info) type = TYPE_STRING;
break;
case 'N':
- type = (thisfield.Decimals) ? TYPE_FLOAT : TYPE_INT;
+ type = (thisfield.Decimals) ? TYPE_FLOAT
+ : (len > 10) ? TYPE_BIGINT : TYPE_INT;
break;
case 'F':
type = TYPE_FLOAT;
|