Commit Graph

228 Commits

Author SHA1 Message Date
1f241a5ed1 Rearrange libraries and build files.
This is the first change in an attempt to arrange the linking so that
more errors are detected at link-time.

- All files in server/core but for gateway.c are linked to one shared
  library called maxscale-common.
- The files log_manager/log_manager.cc and utils/skygw_utils.cc are
  built into maxscale-common as well.
- MaxScale itself consists now only of gateway.c and is linked with
  maxscale-common.
- All plugins link with maxscale-common.
- All executables link in addition with {EMBEDDED_LIB}.

After this change, the change (MXS-517) where query_classifier is the
only component that uses ${EMBEDDED_LIB} and the rest mysqlclient can
be made much cleaner.

After a few additional steps, all shared libraries can be linked with
the linker flags "-Wl,-z,defs", which directs the linker to resolve
all symbols. That will require that all shared libraries list all the
libraries they need, but will at the same time ensure that any
missing symbols are detected at link-time and not at run-time.
2016-01-22 23:26:17 +02:00
985543dbb2 Fixed merge conflict
One function in the query classifier used the old name which led to undefined
symbols.
2016-01-12 09:19:46 +02:00
54ca1ab2de Canonicalized queries remove non-executable comments
The comments which do not alter the functionality of a query are now removed
from canonicalized queries.

Also fixed missing semicolon in the comment removal regex and added tests
for comment removal.
2016-01-11 17:14:57 +02:00
8ee110efa8 Fixed canonicalization and added more tests
Fixed mistakes in the canonicalization regular expressions and altered the
functions to use a source and destination buffers. This reduces the amount
of memory allocations that take place.

Added more canonical query tests to the internal test suite.
2016-01-11 17:14:44 +02:00
e0c84e0fe3 Added removal of MySQL style comments to query canonicalization.
Also fixed minor issues with the canonicalization regular expressions.
2016-01-11 17:13:14 +02:00
c067bbe34a Formatted the canonical query test.
The file is now formatted according to the style guide.
2016-01-11 17:13:01 +02:00
9c9e30fa08 Fixed value replacement and added more tests for canonicalization of queries
The value replacement was not taking session or system variables into notice.
2016-01-11 17:09:40 +02:00
995ed8c9d2 Improved query canonicalization
The query does not need to be parsed for it to be canonicalized and the parsing
uses the PCRE2 library. The regular expressions were changed so that only one
call to the function which replaces literal unquoted values is made.
2016-01-11 17:08:03 +02:00
f57df4b967 Hide unused public functions
parse_query and query_is_parsed are not used outside query classifier
anymore. Consequently, they can be made internal.
2016-01-11 15:28:00 +02:00
4d155f70b0 Remove call to parse_query.
Not needed anymore.
2016-01-11 15:14:27 +02:00
20bc6a4ab7 Reindent canonizer.c
- Untabify
- Remove trailing whitespace.
- Allman braces.
2016-01-11 15:08:27 +02:00
79fa226000 Move private type to implementation.
parsing_info_t is only used by the query_classifier implementation.
No need to keep it public.
2016-01-11 14:58:15 +02:00
23a7562d3a Replace skygw_ type prefix with qc_.
- skygw_query_type_t renamed to qc_query_type_t.
- skygw_query_op_t renamed to qc_query_op_t.
2016-01-11 12:06:21 +02:00
2f42246880 Rename query classifier functions consistently.
All public query classifier functions now have the prefix qc_.
2016-01-11 12:04:52 +02:00
6e6ad67504 Parse query if it has not been parsed already.
Now consistently all functions parse the query if it has not
been parsed already.
2016-01-11 10:02:27 +02:00
40cfe1a864 Merge branch 'release-1.3.0' into develop 2016-01-08 11:14:02 +02:00
4b21154066 Make private query_classifier functions static.
parsing_info_init and parsing_info_done are only used by
query_classifier. Hence they should not be public and extern.
2016-01-07 22:36:15 +02:00
080a9ebc9d PCRE2 is now statically linked
Since the PCRE2 library was always going to be a part of MaxScale, there was
no real reason to have it as a shared library apart from smaller binaries.
2015-12-29 10:09:38 +02:00
93f10fdb7b Formatted query_classifier
Query_classifier formatted according to the style guide.
2015-12-02 13:36:51 +02:00
a829b38873 Fix to MXS-363: Added soname versions to libraries
The soname version numbers were missing from all the library targets
properties which caused ldconfig to warn about non-symlink libraries
being installed.
2015-11-30 10:46:08 +02:00
a8535f42af Remove all traces of logfile_t
The earlier log file based approach for enabling and disabling
messages has now been completely replaced with the syslog priority
based approach.

Similarly as with log files before it is now possible to enable
and disable a log priority for a particular session, even though
it apparently has not been used much.

The local test-programs of the logging has got minimal attention
only to make them compile. They should get an overhaul as they did
not work before either.
2015-11-23 19:10:53 +02:00
23b2ce004b Added support for MariaDB 10.1 embedded library
The code used in the query classifier was not compatible with 10.1 version
of MariaDB and needed to be fine tuned in order for it to work with all
supported versions of MariaDB.
2015-11-23 11:41:05 +02:00
1bd16db593 query_classifier: LOGIF and skygw_log_write replaced.
The use of LOgIF and skygw_log_write replaced with the equivalent
MXS_[ERROR|WARNING|NOTICE|INFO|DEBUG] macros.
2015-11-16 13:42:37 +02:00
a355e1beef Printf format checking added to logging function.
Printf format checking added to logging function and all
issues that were revealed by that fixed.
2015-11-16 12:40:49 +02:00
dee20fe077 Merge remote-tracking branch 'origin/develop' into MXS-329-develop-20151111
# Conflicts:
#	server/core/CMakeLists.txt
#	server/core/buffer.c
#	server/core/service.c
#	server/modules/filter/tee.c
#	server/modules/monitor/mysql_mon.c
#	server/modules/routing/binlog/blr.c
#	server/modules/routing/binlog/blr_slave.c
#	server/modules/routing/debugcmd.c
#	server/modules/routing/readwritesplit/readwritesplit.c
#	utils/skygw_utils.cc

- resolved.
2015-11-11 11:08:02 +00:00
834a88aeda Log variables moved to log_manager.h
The log manager variables lm_enabled_log_files_bitmask, log_ses_count
and tls_log_info that earlier were declared separately in every
c-file are now declared in the log_manager.h header.
2015-11-04 14:26:53 +02:00
0accf869de Fix to MXS-365: https://mariadb.atlassian.net/browse/MXS-365 Added tracking of LOAD DATA LOCAL INFILE
While a LOAD DATA LOCAL INFILE query is being executed, all queries will be sent to the master
and they will not be processed as normal packets.
2015-11-04 12:47:55 +02:00
9064212353 Fixed queries without assignment operators failing to be properly canonized. 2015-10-27 14:20:43 +02:00
c1194a5ee8 Fixed test build failures. 2015-09-10 18:07:24 +03:00
160bbb70ee MXS-251: strerror
Replaces all calls to strerror with calls to strerror_r. The former
is non-thread safe while the latter is.
2015-09-05 15:52:13 +03:00
d960984bb9 Added NULL check for func_name() 2015-07-20 16:26:34 +03:00
0684cd40ce Fix to MXS-220: https://mariadb.atlassian.net/browse/MXS-220
Switched Item_func::name to Item_func::func_name.
2015-07-20 16:13:47 +03:00
5f49a62724 Fix to MXS-166
Added a call to thd->end_statement in parsing_info_done
2015-05-26 14:41:20 +03:00
5f076b81d4 Merge branch 'install_dir_change' into develop
Conflicts:
	CMakeLists.txt
	Documentation/Tutorials/Administration-Tutorial.md
	log_manager/CMakeLists.txt
	server/core/CMakeLists.txt
	server/core/gateway.c
	server/core/maxkeys.c
	server/core/maxpasswd.c
	server/modules/filter/test/CMakeLists.txt
	server/modules/routing/CMakeLists.txt
2015-05-26 13:34:39 +03:00
c8e5df94be Fixed memory leak in query_classifier. 2015-05-03 09:58:17 +03:00
17a7b2addb Updated more variables. 2015-04-26 20:08:27 +03:00
df9bc65430 Added variables that are used when installing instead of relative paths. 2015-04-25 18:35:47 +03:00
440a6ece59 Fix to MXS-78: https://mariadb.atlassian.net/browse/MXS-78
Literal USE statements are now parsed and classified as a database change queries.
2015-04-02 08:16:45 +03:00
e527508405 Added missing header guards to query classifier.h 2015-03-26 11:54:19 +02:00
15262f3fbf Added new Make target for testing MaxScale's core parts.
This target doesn't need a running MaxScale and only executes core, log_manager and query_classifier unit tests.
2015-03-19 11:56:40 +02:00
9e7afeb302 Merge branch 'develop' into MAX-324
Conflicts:
	macros.cmake
	server/core/config.c
	server/core/service.c
	server/modules/routing/CMakeLists.txt
2015-02-24 06:26:55 +02:00
46c4fefb00 Fixes to coverity defects 87601 87557 87548 87547 87546 87545 87544 87536 87535 87529 87528 2015-02-22 22:29:30 +02:00
a2bff1dcea Merge branch 'develop' into MAX-324 2015-02-16 14:58:35 +02:00
37360eb02e Merge pull request #72 from hholzgra/hartmut-warnings-2nd
"Hartmut warnings 2nd" merged.
2015-02-15 20:26:09 +02:00
3bad5dc814 Fixes to Coverity defects 87308, 87307, 87306, 87074, 87068. 2015-02-14 07:54:17 +02:00
792d4e9c8c fix 'unused value' warning 2015-02-13 16:28:57 +01:00
0d4761ade8 Merge branch 'develop' into MAX-324 2015-02-06 23:27:59 +02:00
32c9d39302 Fix to bug 771: http://bugs.mariadb.com/show_bug.cgi?id=711
SHOW GLOBAL STATUS was misclassified as a global system variable write and was being routed to all servers instead of being routed only to the master.
2015-02-05 18:31:01 +02:00
1348947faa Merge branch 'develop' into MAX-324 2015-01-30 20:58:57 +02:00
a9a9a6eae5 Small fixes to log_manager and query_classifier tests. 2015-01-30 08:26:10 +02:00