Commit Graph

926 Commits

Author SHA1 Message Date
cb5c22269e MXS-1474 Take 'cache_in_transactions' into account
When deciding whether the cache should be consulted or not,
the value of the configuration parameter 'cache_in_transaction'
is taken into account as well.
2017-10-31 10:58:03 +02:00
c15eaf2f36 MXS-1474 Accept 'cache_in_transactions' parameter
Only the handling of the configuration parameter.
2017-10-31 10:58:03 +02:00
efeaecaef2 MXS-1486 When there is fresh data, update the cache entry
If something is SELECTed that should be cached for some, but not
for the current user, the cached entry it nevertheless updated.
That way the cached data will always be the last fetched value
and it is also possible to use this behaviour for explicitly
updating the cache entry.
2017-10-24 15:31:08 +03:00
6ba20795b4 Fix GCC7 warnings in cache filter
The thread count did not have enough space for a INT_MAX.
2017-10-06 01:11:00 +03:00
4dd6842447 Send KILL commands to backends
KILL commands are now sent to the backends in an asynchronous manner. As
the LocalClient class is used to connect to the servers, this will cause
an extra connection to be created on top of the original connections
created by the session.

If the user does not have the permissions to execute the KILL, the error
message is currently lost. This could be solved by adding a "result
handler" into the LocalClient class which is called with the result.
2017-10-03 14:47:16 +03:00
a7e610a70a Extract shared session information in LocalClient constructor
When the LocalClient is constructed, it is possible to extract all the
needed information at that time. The only obstacle is the fact that the
LocalClient is constructed at the same time the session is. Since the
client DCB is created before the session, it is safe to extract the shared
data directly from it.
2017-10-03 14:47:16 +03:00
071d364b0a Fix formatting errors
Fixed the formatting errors introduced by Astyle. Changed the comment
syntax to use a more Astyle-friendly one.
2017-09-28 20:27:07 +03:00
14d8b6a0df Remove MODULECMD_ARG_OUTPUT argument type
Since the module command interface was expanded to include a JSON output
parameter, there is no longer a need for an output DCB. As the JSON can be
printed by both maxadmin and the REST API, this allows the removal of
explicit output formatting in module commands.
2017-09-28 13:59:28 +03:00
c2283bbff1 Remove LocalClient fd from poll set
The file descriptor registered for the LocalClient instances need to be
removed from the worker it was added to when the object is destroyed.
2017-09-28 11:04:02 +03:00
895d950da0 Format all source files with Astyle
Formatted all source files Astyle.
2017-09-28 07:04:21 +03:00
7b6680b8fa Merge branch '2.1' into 2.2 2017-09-27 13:04:14 +03:00
23fb0bf928 MXS-1449 Firewall: Allow 'USE <db>'
When the database firewall filter is used in white-list mode,
'USE <db>' should be allowed. When connecting, it is always
possible to specify the database anyway so restricting
'USE <db>' serves no purpose.
2017-09-27 12:59:20 +03:00
c1a7008479 MXS-1449 Sort case statements
Faster to later check for something specific.
2017-09-27 12:59:20 +03:00
68bcd00a22 Merge branch '2.1' into develop 2017-09-20 10:47:53 +03:00
aaa60d37e6 Add missing parameter documentation to maxrows
Documented new parameters.
2017-09-18 22:03:30 +03:00
d72375ebb5 Reset resultset offset when discarding response
The offset into the resultset buffer needs to be reset before each
processed packet if the resultset is being discarded.
2017-09-18 20:51:52 +03:00
d168493ddf Fix maxrows offset calculation
The code that handles the resultset rows added the extra offset given as a
parameter into the total offset when it should've be ignored.
2017-09-18 20:32:28 +03:00
d00c5b2838 Move thread initialization into Worker::run
By moving the initialization into Worker::run, all threads, including the
main thread, are properly initialized. This was not noticed before as
qc_sqlite initialized the main thread in the process initialization
callback.
2017-09-15 18:08:49 +03:00
d1b742eaa5 Log details if cache received unexpected packet from server 2017-09-15 17:14:21 +03:00
fb12e4c0aa MXS-1411: additional fix to error message
MXS-1411: additional fix to error message
2017-09-15 15:30:39 +02:00
9dd7f2174c MXS-1412: while discarding a result set don't buffer any data.
MXS-1412: while discarding a result set don't buffer any data: this
avoids to store useless data.

Additionally the colum definitions buffer is used instead of the offset
value.
2017-09-15 12:05:28 +02:00
8905c3aa34 MXS-1411: fix error message and log priority
MXS-1411: fix error message and log priority
2017-09-14 15:33:39 +02:00
099a482f04 Add missing default case to masking filter
The default case for the PS field values was missing.
2017-09-14 15:30:44 +03:00
45e0e8bb59 Introduce internal protocol command enum
The enums exposed by the connector are not intended to be used by the
users of the library. The fact that the protocol, and other, modules used
it was in violation of how the library is intended to be used.

Adding an internal mapping into MaxScale also removes some of the
dependencies that the core has on the connector.
2017-09-14 15:30:43 +03:00
3676dcebb1 MXS-1398: Clean up mysql.h header
Cleaned up the MaxScale version of the mysql.h header by removing all
unused includes. This revealed a large amount of dependencies on these
removed includes in other files which needed to be fixed.

Also sorted all includes in changed files by type and alphabetical
order. Removed explicit revision history from modified files.
2017-09-14 15:30:43 +03:00
7e48941a04 MXS-1412: Process response buffers individually
By processing each buffer individually, the need to iterate over the whole
resultset is removed. Profiling showed that most of the time was spent
navigating the linked list of buffers when an offset into the whole
resultset was used instead of an offset to the individual response buffer.
2017-09-14 09:50:05 +03:00
efb1e541e2 Add missing DbfwThread initialization
The thread objects didn't initialize the rule version to the proper value.
2017-09-13 18:03:43 +03:00
16127d893c Fix compilation failures on CentOS 6
Thread-local non-POD types are not supported on CentOS 6 and thus they
need to be replaced with pointers to the relevant objects and initialized
at runtime.

In addition to this, functor objects don't appear to work as expected in
CentOS 6 and replacing them with a simple for-loop seems to work.
2017-09-12 11:17:19 +03:00
bca1e34d27 MXS-1389: Add missing basic rule type
The basic rule type that matches everything was not created when a rule
with only an optional part was defined. This caused a crash when only one
rule with only an optional part was created. This was caused by the
expectation that the list of rules was never empty.
2017-09-08 09:31:38 +03:00
a4975edbba MXS-1389: Fix rule reloading and query parsing requirements
Reloading of rules now properly uses the current rule file if no argument
was provided. The rule version counter also used atomic operations for the
sake of correctness.

The rule parsing is now only required for DML type statements that should
be fully parsed.
2017-09-08 09:31:38 +03:00
26f0c08522 MXS-1389: Allow mandatory commands to pass
All commands that are deemed mandatory must be allowed to pass through the
filter.
2017-09-08 09:31:38 +03:00
a08179afcb MXS-1346: make value comparisons case-insensitive
All values for columns, function and function_usage rules should be
compared in a case-insensitive way.
2017-09-08 09:31:38 +03:00
9ed0524699 MXS-1346: Fix at_times time period calculcation
The time period matched for one extra second.
2017-09-08 09:31:38 +03:00
68baf582c8 Deprecate deny and allow in dbfwfilter rules
The `deny` and `allow` tokens are replaced with `match` which better
describes the action. Use of the old tokens causes a warning to be logged.
2017-09-08 09:31:38 +03:00
7272d9401d MXS-1346: Fix the at_times rule
The rule used the values from the QuerySpeed struct instead of the values
in the rule itself.
2017-09-08 09:31:38 +03:00
b9698f15e7 MXS-1346: Clear value stack when a new rule is created
The values on the stack are cleared when a new rule is created.
2017-09-08 09:31:37 +03:00
1fcf4ef59a MXS-1346: Allow combination of function and columns rules
The `function` type rule can now be combined with the `columns` type rule
to form a new rule which matches if specific columns use specific
functions.
2017-09-08 09:31:37 +03:00
a955e4a623 MXS-1346: Only parse text queries
Only text format queries (COM_QUERY, COM_STMT_PREPARE) can be parsed by
the query classifier.

Also fixed invalid use of a NULL value in a string constructor.
2017-09-08 09:31:37 +03:00
2ccdd93d44 MXS-1346: Fix rule handling
The call to update_rules is needed before each query to make sure that the
rules are up to date.

The check whether the rule was active was inverted.
2017-09-08 09:31:37 +03:00
6067c21c1b MXS-1346: Use the filter template in dbfwfilter
The dbfwfilter now uses the MaxScale filter template. Also fixed up some
of the filter template documentation.
2017-09-08 09:31:37 +03:00
fc1435d0c2 MXS-1346: Hide DbfwSession internals
The DbfwSession now only exposes the necessary methods with the exception
of the DOWNSTREAM and UPSTREAM structures. These will be handled when the
session implements the filter template.
2017-09-08 09:31:37 +03:00
dc7b25d0fe MXS-1346: Make Dbfw a proper class
The Dbfw class now only exposes the necessary methods which are required.
2017-09-08 09:31:37 +03:00
cf2e8d8b34 MXS-1346: Add DbfwSession method implementations
Added the implementation of the DbfwSession methods.
2017-09-08 09:31:36 +03:00
f5401c5244 MXS-1346: Rename dbfwfilter instance and session
Renamed the structures to C++ naming style and added initial declarations
for DbfwSession methods.

The DbfwSession methods are not yet fully implemented which is why parts
of the class are still public. The intention is to use the filter template
when the session class is sufficiently refactored.
2017-09-08 09:31:36 +03:00
fa6f155d29 MXS-1346: Make Rule methods const
Most of the methods can be const functions.
2017-09-08 09:31:36 +03:00
3648b5e702 MXS-1346: Clean up dbfwfilter.cc
Remove redundant code, move assignments to struct constructors, organize
variable declarations, use standard library functions.
2017-09-08 09:31:36 +03:00
4c4ea94319 MXS-1346: Clean up unused code
Removed the rule type enum and replaced it with a string description of
the type. Moved the rule type and name strings as private to the Rule
class. Replaced the need_full_parsing of the base class with a simple
constant.

Removed the unused array of rule names as well and the STRLINK structure
and the functions that use it.
2017-09-08 09:31:36 +03:00
594956178d MXS-1346: Implement LimitQueriesRule::matches_query
Moved the code into the LimitQueriesRule class and cleaned it up. Renamed
the QUERYSPEED struct and added simple constructor.
2017-09-08 09:31:36 +03:00
890f860650 MXS-1346: Refactor column, function and function usage rules
The rule matching implementations are now done in the ColumnsRule,
FunctionRule and FunctionUsageRule classes. The query_matches function now
also takes the session as its first parameter to relay session related
information to the rule. This will be needed by the LimitQueriesRule
class.
2017-09-08 09:31:36 +03:00
eb884aeb6e MXS-1346: Rename users.cc to user.cc
user.cc better describes the contents of the file as it defines the User
class.
2017-09-08 09:31:36 +03:00