Commit Graph

360 Commits

Author SHA1 Message Date
Evan Miller
e9f4c6c786 Remove GLib dependency WIP
Add a shim implementing half-assed versions of most of the GLib
functions used by MDB Tools. If GLib is detected at compile-time,
use it, otherwise use the shim.

This work is not complete, as the option-parsing code is not yet
implemented - so most of the command-line tools crash.
2020-08-03 17:19:40 -04:00
Evan Miller
7b3721a4e1 Merge github.com:cyberemissary/mdbtools 2019-06-03 11:58:16 -04:00
VJ
c8fd67bf84 Fix more warnings as a result of #14 2019-05-31 21:59:37 -04:00
Evan Miller
cdde7c3268 Enable strict prototypes warnings, and fix warnings
If a host project has -Wstrict-prototypes enabled, the mdbtools header
results in warnings. Turn on -Wstrict-prototypes for the whole project
so that these never occur again.
2018-12-29 10:34:54 -05:00
Evan Miller
2b84f6c7f5 Fix buffer overflow 2018-09-20 13:02:32 -07:00
Evan Miller
0e9c1810f1 Improved support for Access 2010, 2013, and 2016
Some Access 2010 files use 0x03 as the version number rather than
0x0103. For this reason I have changed the call to mdb_get_int32 to
mdb_get_byte.

In addition, according to the Library of Congress page:

https://www.loc.gov/preservation/digital/formats/fdd/fdd000463.shtml

Access 2016 uses 0x05 as the version number. I have inferred from the
Wikipedia page that Access 2013 likely uses 0x04.
2018-03-05 06:39:57 -05:00
Cyber Emissary
40b7818906 Merge pull request #2 from mdjnewman/unknown-version-logging
Print unknown Jet versions in libmdb
2018-02-12 16:43:37 -05:00
Cyber Emissary
104d952cda Merge pull request #6 from jimmytaker/omaster
Use bigger buffer when reading big blobs to increase performance
2018-02-12 15:48:30 -05:00
Cyber Emissary
278f9ba441 Implemented bulk insert 2018-02-12 15:21:15 -05:00
Cyber Emissary
dbc7e51e98 do not include table name in MySQL indexes. 2018-02-06 13:11:13 -05:00
Cyber Emissary
fd230f68f2 precision and scale were used other way around. Flipped their usage
in all places
2018-02-06 13:10:56 -05:00
Cyber Emissary
702ce2b7cd fixed mysql types, and numeric scale/precision 2018-02-06 13:10:13 -05:00
Matt Newman
d196436a27 Print unknown Jet versions in libmdb 2018-01-16 18:24:53 -05:00
leecher1337
e9ec53f6bd Fixing JET4 Index support via libmswstr. Used as a separate library to do it like MS Jet and to ensure that mdbtools library doesn't get tainted with its source. 2017-12-05 00:13:28 +01:00
leecher1337
c81d35f2ea Optimization: Assuming that the index is sorted, I guess an index search can bail out as soon as target value has been found? 2017-12-03 23:25:35 +01:00
leecher1337
4edb48ed17 Bugfixes for JET4 indices. 2017-12-03 23:20:11 +01:00
leecher1337
42cdc6727e index.c: Centralised debugging helper 2017-12-03 18:18:21 +01:00
leecher1337
f8aa3f1104 Let debug hexdump-function output as unsigned hex value properly 2017-12-03 17:57:24 +01:00
leecher1337
5c32359f3e Fixed severe double-free bug on mdb_clone_handle with immediate mdb_close() afterwards leading to memory corruption 2017-12-03 17:53:41 +01:00
leecher1337
135f452407 Merge branch 'master' into master 2017-12-03 17:02:15 +01:00
Brian Bruns
9d56b0c3d8 bug fix for 'bad' data with odd number of UCS-2 bytes 2016-08-30 08:52:32 -04:00
leecher1337
2355aec912 At least for me IS NULL and IS NOT NULL are the wrong way round in SQL, fixed it. 2016-08-29 12:14:51 -04:00
Brian Bruns
15230b5b73 Merge pull request #94 from ewen-naos-nz/boolean_data_as_words
mdb-export: Add boolean words option (TRUE/FALSE)
2016-08-29 09:40:51 -04:00
Brian Bruns
1c04bcb308 Merge pull request #95 from ewen-naos-nz/jet4_index_flags
JET 4: index flags (eg, UNIQUE) 4 bytes later
2016-08-29 09:39:17 -04:00
Ewen McNeill
999f6f5f10 JET 4: index flags (eg, UNIQUE) 4 bytes later
Re-reverse engineered index meta information layout in JET 4
file format, based particularly on jackcess (Java) JET/Access
database library (https://github.com/jahlborn/jackcess), and
hexdumps of JET 4 database index meta information.  Based both
on byte counting of jackcess reading of index definitions and
also expected flag values (0x80, 0x89, etc), the flags of JET 4
index definition are 4 bytes later than mdbtools previously thought.

See IndexData.read() and private static class Jet4Format in
src/main/java/com/healthmarketscience/jackcess/impl/IndexData.java
src/main/java/com/healthmarketscience/jackcess/impl/JetFormat.java
in jackcess source for layout reference.

Now appears to get sensible "CREATE INDEX"/"CREATE UNIQUE INDEX"
behaviour on export to PostgreSQL schema.

Also added extensive index definition byte layout reference to top
of src/libmdb/index.c for ease of reference, plus more debugging
assistance (and comments of phases reading index for readability).
2016-04-08 10:23:10 +12:00
Ewen McNeill
8b1db6c08e mdb-export: Add boolean words option (TRUE/FALSE)
Adds "-B" (--boolean-words) option to mdb-export, which will reconfigure
mdb/data.c to export TRUE/FALSE for boolean values instead of 1/0.  The
option is needed to support BOOLEAN fields on PostgreSQL, which will not
implicitly cast bare 1/0 into a BOOLEAN value.  Value literals are the
SQL TRUE/FALSE, and _quoted_ words meaning true/false and _quoted_
'1'/'0'.  With this flag the SQL TRUE/FALSE values are output, which should
work with several SQL databases.

PostgreSQL Reference:

http://www.postgresql.org/docs/current/static/datatype-boolean.html
2016-04-07 08:45:06 +12:00
Sam Shaw
ffccc9d1cf Oracle Foreign Keys
Oracle doesn't support the "ON UPDATE" clause for foreign keys.
2016-01-12 09:58:17 +08:00
Sam Shaw
7f21d4e030 Oracle BLOB & CLOB
BLOB and CLOB do not have a size constraint in Oracle
2015-12-23 13:46:31 +08:00
Sam Shaw
ffbc492a8b Oracle Indexes
Add syntax for creating indexes in oracle (it's the same as PostgreSQL)
2015-12-23 13:31:05 +08:00
Jimmytaker
55d57c65cf Use bigger buffer when reading big blobs to increase performance 2015-10-06 20:43:10 +02:00
leecher1337
e2449c11f3 Added strptime function to SQL parser as a feature. This is needed to i.e. be able to query time-fields in DB and to use dates <1.1.1970 and >19.1.2038. All changes should be backwards-compatible to not break existing queries. 2015-08-30 11:23:57 +02:00
leecher1337
5ce4cc5528 At least for me IS NULL and IS NOT NULL are the wrong way round in SQL, fixed it. 2015-08-21 14:50:34 +02:00
Vladimir Rutsky
772b5675dd fix typo: "popluated" 2015-03-05 16:20:12 +03:00
Vladimir Rutsky
9fb36c0f07 fix typo: "enought" 2015-03-04 13:23:23 +03:00
Jimmytaker
a5e1ab8a2e Fix not being able to handle blobs > 16 MB. Limit now at 256 MB 2014-12-29 14:54:25 +01:00
Nirgal Vourgère
9b4d5e624b Avoid dynamic array allocation on stack.
This might help some non C99 compliant compilers, while being a trivial change.
2014-12-29 13:14:45 +01:00
Nirgal Vourgère
2a70e16a8b Allow CFLGAS="-std=c99 -D_POSIX_C_SOURCE=2"
Use glib function:
strcasecmp -> g_ascii_strcasecmp
bzero -> memset
strdup -> g_strdump

Don't use arithmetic void*+int
2014-12-28 12:36:55 +01:00
Jimmytaker
850d9e169d Fix not being able to handle blobs > 16 MB. Limit now at 256 MB 2014-12-22 20:14:40 +01:00
Jimmytaker
49bc1e3c40 New useful function (generate_table_schemas) for Windows but not only 2014-12-22 20:13:31 +01:00
Jimmytaker
cb65d4f3dd Compiles with VC++ as a .dll. Set up to use static glib, libiconv, libintl for ease of use. 2014-12-22 20:09:43 +01:00
Jimmytaker
aab7a561f1 VS2012 Build project and gitignore update 2014-12-22 19:55:11 +01:00
Shane Mc Cormack
a3ab6c7969 Fix for dates in mdb-props 2014-10-18 06:25:54 +02:00
Maurus Cuelenaere
e2c46bad8b Add MySQL support to mdb_print_indexes() 2014-10-17 22:18:34 +02:00
Maurus Cuelenaere
97ddfcf8b2 Introduce MDB_BACKEND_* enum 2014-10-17 22:16:49 +02:00
tyzhaoqi
9ab40e83e6 Fix binary outout
Closes issue #44
2014-07-24 08:10:49 +02:00
lovelytwo
a89baeacf5 Segfault fix on memo zero length multiple page
While converting memo field to string, stop processing on zero length multiple
page.
2014-05-02 15:12:16 +02:00
Maurus Cuelenaere
65b573637e Add MySQL support to mdb_print_indexes() 2014-03-17 13:30:40 +01:00
Maurus Cuelenaere
cce6cfead2 Introduce MDB_BACKEND_* enum 2014-03-17 13:30:28 +01:00
Nirgal Vourgère
4a3f3492cd Prints "file not found" when that happens
... rather than the obscure "Can't alloc filename"
2013-07-18 15:21:14 +02:00
Nirgal Vourgère
7841d30d43 Revert use of config.h
Revert
7162e8db74
088493d499

And drop AC_CONFIG_HEADERS so that config goes though the command line.
No longer generating config.h, update .gitignore
2013-07-15 02:42:12 +02:00