Commit Graph

69 Commits

Author SHA1 Message Date
aa65cc853a Exchanged C written connection pool class by native python class. 2021-01-18 06:11:03 +01:00
7df428ecf8 Moved Objects from c to python code
Indicator, BINARY, NUMBER, STRING and DATE objects were moved
to python code
2020-11-30 16:49:16 +01:00
a1c709b0e8 Fix for CONPY-133:
Extended parser for supporting MariaDB comment syntax
(https://mariadb.com/kb/en/comment-syntax/)
2020-11-24 14:00:56 +01:00
312ba15173 Follow up of fix for CONC-130:
Workaround for #21066 (https://bugs.python.org/issue20066)
2020-11-16 14:58:59 +01:00
a47d3e5d76 Implementation of CONPY-129:
Added connection attribute server_version_info and (for compatibiliry)
get_server_version() method.
Both return a tuple, describing the version number of connected server
in following format: (MAJOR_VERSION, MINOR_VERSION, PATCH_VERSION)
2020-11-16 10:03:05 +01:00
4a5d02a1b1 Fix for CONPY-130: DeprecationWarning: builtin type Row has no _module_ attribute
Changed sequence description from Row to mariadb.Row.

This patch also includes a followup fix for CONP-131:

PyStrustSequenceNew will be used only for Python versions > 3.6
2020-11-16 07:33:53 +01:00
f6be6ba512 Fix for CONPY-131:
Instead of using PyStructSequence_New (broken in Python3.6) use a
static struct which will be initialized voa PyStructSequence_Init()
call.
2020-11-16 07:07:50 +01:00
37864dd831 Fix for CONPY-126
Connection attributes in PyMember definition will be accessed as
string constants instead of Python Object, so the object will be
created only if the member will be accessed in python code and it's
reference count doesn't need to be decrement when the connection
class will be deallocated.
2020-11-01 09:14:11 +01:00
3b2edf5b35 Fix for CONPY-115:
Replaced the obsolete ULONG_LONG_MAX definition by
ULLONG_MAX.
2020-10-19 08:11:32 +02:00
8944cb889a Error handling fixes:
Instead of OperationalException and IntegrityException will be raised
for the following eror types:
ER_BAD_NULL_ERROR, ER_DATA_OUT_OF_RANGE, ER_CONSTRAINT_FAILED, ER_DUP_CONSTRAINT_NAME
2020-10-04 11:35:40 +02:00
846c0d0fdb Fix for CONPY-119: Fixed memory leak
When creating a cursor with result set type named_tuple
or dictionary, references were not decremented correctly.

For named tuples we don't use a static variable anymore, instead
of it will be created by PyStructSequence_NewType.
2020-10-03 16:41:29 +02:00
bce98d74cd Fix for CONPY-118: Leak when using text protocol
Removed statement allocation from the cursor init function and
allocate it only in executemany and execute if paraemters were
supplied.
2020-10-02 12:52:09 +02:00
08673bbdf4 Small "workaround" for MDEV-23481:
Don't set the unsigned flag if the value will fit into signed integer.
2020-09-29 14:14:02 +02:00
3f95456824 CONPY-117: Added converter support
The connect() method now accepts an addtional parameter
converter which points to a dictionary, containing one or more conversions.
A conversion must be specified in the form {FIELD_TYOE : conversion_function}
2020-09-29 13:21:13 +02:00
5d4a8d5d62 Fix for CONPY-116: Wrong type reported for SQL type JSON
Beginning of MariaDB 10.5 metadata for JSON columns is stored
in extended field information, and the reported type is MYSQL_TYPE_BLOB.
We now check extended field information to return correct type and for
fetching values in correct format.
2020-09-29 11:43:47 +02:00
709ac83799 Fixed compiler warnings 2020-09-19 14:05:53 +02:00
bd560c2bb9 Fix for CONPY-108 (memory leak):
- initialize datetime API only once per object file
- don't reparse same statement
2020-08-29 12:20:52 +02:00
e091edd549 Fix for CONPY-106
Check error number instead of SQL code for determine exception type.
2020-08-14 14:44:05 +02:00
588bc01cc0 Implementation for CONPY-100:
Add option binary for cursor. When set to true cursor will always try
to use the client/server binary protocol, even when no parameter were
passed to execute.
2020-08-12 16:05:29 +02:00
01053e0d4a Fix for CONPY-93:
When releasing the GIL we need to unblock/block in callback functions (mariadb_codecs.c)
2020-08-05 18:54:19 +02:00
ea8354bb8b Added internal members for client and server capabilities to
MrdbConnection class.
2020-06-18 10:23:56 +02:00
5631d6ed3f Fixed bug in pooling tests:
Paraneters in set_config() method have to be checked against the list of DSN keywords.
2020-06-17 08:59:31 +02:00
ed2695b68c Fix for CONPY-78:
Instead of checking the server version number if a specific feature
is supported, we need to check the server capability or extended
capability flag.
2020-06-15 10:13:26 +02:00
e58caef84c Fix for CONPY-67:
If no rows were fetched from an unbuffered cursor (resultset) rowcount
now returns -1 instead of 0.
2020-05-27 10:40:35 +02:00
7142bedc62 Fix for CONPY-66:
fixed typo in setup configuration for windows, which caused to link
dynamically against MySQL Connector/C.
2020-05-14 14:24:32 +02:00
e873f87fab CONPY-56: Support dictionary option in cursor class
Added optional boolean parameter 'dictionary' for cursor class.
When dictionary parameter was set to true, the fetch operations will
return rows from result set as Dict.
2020-04-14 06:25:25 +02:00
eb46aa83ba Windows build fix for __attribute__((unused)):
Undefine __attribute__() macro if compiler is not gnuc or clang.
2020-04-06 20:26:05 +02:00
fe95eb0dee CONPY-49: Added support for Decimal type
1) When retrieving data with column type MYSQL_TYPE_NEWDECIMAL C/Python
now loads the decimal module and converts data from string into Pythons
decimal.Decimal type.

2) Wnen sending a decimal.Decimal parameter, value will be converted to string
and send with type MYSQL_TYPE_NEWDECIMAL to server.
2020-04-05 22:01:17 +02:00
a992bf3568 Fix for CONPY-51:
When using a buffered cursor, we need to store the field_count inside
Mrdb_Cursor, since db.commit/rollback will overwrite/clear mysql->field_count
inside Connector/C.
2020-04-05 21:45:44 +02:00
083086b1dd Fix for CONPY-45:
When converting time or datetime values with microseconds, the
calculation was wrong, e.g. a millisecond value of .123 was converted
to .000123 instead of .123000. This was already fixed in C/C but not
in C/Python.
2020-03-25 18:11:02 +01:00
840de124bd - minor Documentatiion fixes
- fixed test cases using removed character set option
2020-02-18 16:11:29 +01:00
a5bdf2a0b4 Make code more PEP-7 compliant 2020-01-07 05:03:16 +01:00
ad07e971b8 Build fixes 2019-12-18 15:10:54 +01:00
55963c6071 Windows fixes:
- fixed build (malloc.h needs to be included for alloca)
- fixed failing test (using lowercase db name)
2019-12-16 09:13:23 +01:00
675223744b Build fixes for MacOSX 2019-12-04 17:11:37 +01:00
3b02464b63 Fixes for class ConnectionPool()
- added mutexes for thread safety
- when calling get_connection thread pool will now not return the next
  free connection, but the connection that was not used the longest time.
2019-12-01 05:47:19 +01:00
5163e1900d Fixed windows crash: When parsing s#, the length parameter must be
defined as Py_ssize_t
2019-11-27 09:26:28 +01:00
a160152903 Windows build fixes: configuration is now stored in site.cfg 2019-11-25 17:24:04 +01:00
628fc39cd0 Initial connection pool implementation 2019-11-24 12:45:32 +01:00
0b66a9f287 Added documentation for cursor class 2019-11-17 12:43:22 +01:00
89ea56d668 Implementation of CONPY-29: Support format and pyformat paramstyle
While the default paramstyle is still 'qmark', MariaDB Connector/Python
now also supports the paramstyles 'format' and 'pyformat'. The paramstyles
can't be mixed.
2019-11-14 09:21:57 +01:00
7a8922ad90 Fix for CONPY-28: crash when creating a cursor 2019-11-13 12:20:32 +01:00
a4648e992c Implemented CONPY-27: support prepared for cursor
Fixed line endings (dos2unix)
2019-11-13 11:45:02 +01:00
1b75fa2e7d Merge branch 'master' of https://github.com/MariaDB/mariadb-connector-python 2019-11-12 11:13:08 +01:00
0d565a6fb7 Added more documentation 2019-11-12 09:41:25 +01:00
88a27a10d7 [misc] Adding PY_SSIZE_T_CLEAN to handle python 3.8 parsing int deprecation 2019-11-06 15:16:29 +01:00
e2f51e072a Added documentation for module and connection 2019-10-31 07:35:34 +01:00
9a35790bac Added support for text protocol:
If the execution of a sql statement doesn't use parameters, we always use
text protocol instead of binary protocol.
2019-09-09 07:03:40 +02:00
273777c92c Windows build fixes 2019-08-29 12:06:29 +02:00
56b7a3a3b3 CONPY-21: Invalidate cursors if connection was dropped 2018-08-06 07:13:04 +02:00