Proto commits in mysql/mysql-connector-python

These 17 commits are when the Protocol Buffers files have changed:

Commit:f71acca
Author:Oscar Pacheco
Committer:Oscar Pacheco

WL#16203: GPL License Exception Update This work log updates the Copyright header. Change-Id: I97b2471e01d299b7c846c8ae8a83207a702c8a3b

The documentation is generated from this commit.

Commit:5302916
Author:Oscar Pacheco
Committer:Oscar Pacheco

WL#15836: Split mysql and mysqlx into different packages Change-Id: I19ec1773b447ff98723a5ac8dfa37888f456e686

Commit:0cc98b5
Author:Oscar Pacheco

Revert "WL#15836: Split mysql and mysqlx into different packages" This reverts commit b15f9c2f043e0578d8faff6ce5ad836513322eb2.

Commit:b15f9c2
Author:Nuno Mariz
Committer:Oscar Pacheco

WL#15836: Split mysql and mysqlx into different packages MySQL Connector/Python includes the mysql and mysqlx packages as part of the `mysql-connector-python` package installation. The mysql package includes the classic protocol connector while the mysqlx package includes the X protocol connector. With this worklog, the `mysql-connector-python` package is split into two packages: 1. mysql-connector-python 2. mysqlx-connector-python Change-Id: I9136c75895d7282d361aa36fd1fe5f7d9029c281

This commit does not contain any .proto files.

Commit:aa43a11
Author:Israel
Committer:Israel

WL14212: (XProtocol) Support connection close notification The Purpose of this worklog is to collect and use the X Plugin notices send on Mysqlx.Notice.Warning messages when it closes the client connection due to one of the following reasons: - The connection is idle (Mysqlx_read_timeout and/or Mysqlx_wait_timeout have been exceeded). - The connection has been killed by a different session (either via SQL or via Admin API). - The server is shutting down. This worklog advices the user why her connection has been closed by a logging warning and a error message with one of the above reasons. The connection pool will avoid further connections to this server for a small period of time if the reason is that the server is shutting down.

Commit:bcd5a31
Author:Nuno Mariz
Committer:Nuno Mariz

WL12501: Connection compression This worklog adds support for connection compression using the X Protocol. The supported compression algorithms are lz4_message and deflate_stream via third-party software python-lz4.

Commit:03ad977
Author:Israel Gomez
Committer:Israel Gomez

WL12489: DevAPI: Support new session reset functionality The Pooling implementation supported on MySQL 8.0.13 is limited by the server side; who closes the connection after the client asks for reset the session. MySQL 8.0.16 provides full functionality; connections will not be closed by the server after they are reset by the client. This worklog ensures the Python Dev API supports this new server functionality on the client'sside.

Commit:77cd162
Author:Nuno Mariz
Committer:Nuno Mariz

WL12225: Prepared statement support This WL is about improving performance of repeated statement execution by using server-side prepared statements. It does not change anything on the API level, only changes the internal implementation to use prepared statements. It also adds support for parameter binding in the SQL Statements. Tests were added.

Commit:5319228
Author:Israel Gomez
Committer:Israel Gomez

WL11448: New document _id generation support The MySQL Connector/Python X DevAPI provides functionality to create the id field (_id) in the documents when the user does not provide one. However, with the introduction of WL#11390 this capability will be available at the server side. In addition connectors shall not create ids anymore to avoid possible collisions. Generated ids at the server side will be available on the result of the execution of the add statement through the method get_generated_ids(), which returns a list. v6

Commit:fba053f
Author:Nuno Mariz

WL11473: Update license text

Commit:f757175
Author:Nuno Mariz

Change copyright header in .proto files

Commit:408864a
Author:Israel Gomez
Committer:Israel Gomez

WL11142: DevAPI: Modify/MergePatch This Worklog provides the entry point to use the MySQL Server Functionality to Patch JSON Documents through the addition of a new function to the MySQL Connector Python X Developers Application Programming Interface. The deliverable product is a new method called "patch" that will be added to the ModifyStatement Class (that represents a statement for document update operations on a Collection) that handles the functionality specified in the MYSQL X DevAPI Specification for the Modify Collection Method. This way this new patch function will be available to be applied to documents resulting from a search condition applied to a collection. The Patch method allows the developers to add or unset attributes in a JSON document in addition to update their values on a single invocation. To invoke the Merge Patch Operation, developers will require to specify a target and a patch. The target is defined from a condition, which is applied to a collection and all documents whom meets the condition will become the target. Notes: 1. Placeholder for WL#10725 for the Modify.Patch() method for the MySQL Connector Python X DevAPI. v1

Commit:fc2c541
Author:Amitabh Das
Committer:Amitabh Das

WL10975: Add Single document operations These are commands that operate at a single document level, unlike the other CRUD commands that operate on all documents that match a filter. This feature adds 4 methods to `Collection`: 1. `Collection.replace_one` replaces a document identified with a document_id with the provided document. 2. `Collection.add_or_replace_one` does the same as replace_one, but this adds a new document if the document_id doesn't exist. 3. `Collection.get_one` returns a document matching a document_id. 4. `Collection.remove_one` removes a document matching a document_id. This patch also adds the upsert(val=True) method chainable to Table.insert() and Collection.add(). By default upsert is set to False. Setting this to True replaces the row matched with the provided key with the values provided. Tests have been added for regression.

Commit:2035753
Author:Amitabh Das
Committer:Amitabh Das

WL10974: Add Row locking methods to find and select operations This patch add two methods `lock_shared` and `lock_exclusive` to the Colleciton.find() and Table.select() command chains. Multiple calls to these methods are allowed, but only the last call is considered as final locking mode. Tests have been added for regression.

Commit:01a9bd5
Author:Nuno Mariz
Committer:Nuno Mariz

WL10452: Add Protobuf C++ extension for Linux variants and Mac OSX This patch replaces the pure Python implementation of Protobuf by a C++ extension. With this change, the Connector/Python implementation of MySQL X Protobuf now supports Python 2 and 3 versions, on Linux variants and Mac OSX Changes were made in unittests and building/installing setup.

Commit:b1f6c4d
Author:Nuno Mariz

Update copyright year in the .proto files

Commit:cef97a6
Author:Nuno Mariz

Add Protobuf 3 support to mysqlxpb extension