1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-04-18 21:44:02 +03:00

27 Commits

Author SHA1 Message Date
drrtuy
6001db44ab
fix(BRM): MCOL-5879 DBRM::clearShm runs crit sections w/o sync mechanism (#3390) 2025-02-20 16:33:28 +00:00
Leonid Fedorov
04752ec546 clang format apply 2022-01-21 16:43:49 +00:00
Roman Nozdrin
fb5ba84212 MCOL-4802 Removed ByteStream methods for bool manipulations and add some logging into I_S.columnstore_files 2021-07-07 07:16:30 +00:00
Alexander Barkov
9608533d92 MCOL-4734 Compilation failure: MariaDB-10.6 + ColumnStore-develop
mcsconfig.h and my_config.h have the following
pre-processor definitions:

1. Conflicting definitions coming from the standard cmake definitions:
- PACKAGE
- PACKAGE_BUGREPORT
- PACKAGE_NAME
- PACKAGE_STRING
- PACKAGE_TARNAME
- PACKAGE_VERSION
- VERSION

2. Conflicting definitions of other kinds:
- HAVE_STRTOLL - this is a dirt in MariaDB headers.
  Should be fixed in the server code. my_config.h erroneously
  performs "#define HAVE_STRTOLL" instead of "#define HAVE_STRTOLL 1".
  in some cases. The former is not CMake compatible style. The latter is.

3. Non-conflicting definitions:
  Otherwise, mcsconfig.h and my_config.h should be mutually compatible,
  because both are generated by cmake on the same host machine. So
  they should have exactly equal definitions like "HAVE_XXX", "SIZEOF_XXX", etc.

Observations:
- It's OK to include both mcsconfig.h and my_config.h providing that we
  suppress duplicate definition of the above conflicting types #1 and #2.
- There is no a need to suppress duplicate definitions mentioned in #3,
  as they are compatible!
- my_sys.h and m_ctype.h must always follow a CMake configuation header,
  either my_config.h or mcsconfig.h (or both).
  They must never be included without any preceeding configuration header.

This change make sure that we resolve conflicts by:
- either disallowing inclusion of mcsconfig.h and my_config.h
  at the same time
- or by hiding conflicting definitions #1 and #2
  (with their later restoring).
- also, by making sure that my_sys.h and m_ctype.h always follow
  a CMake configuration file.

Details:
- idb_mysql.h can now only be included only after my_config.h
  An attempt to use idb_mysql.h with mcsconfig.h instead of
  my_config.h is caught by the "#error" preprocessor directive.

- mariadb_my_sys.h can now be only included after mcsconfig.h.
  An attempt to use mariadb_my_sys.h without mcscofig.h
  (e.g. with my_config.h) is also caught by "#error".

- collation.h now can now be included in two ways.
  It now has the following effective structure:

    #if defined(PREFER_MY_CONFIG_H) && defined(MY_CONFIG_H)
    //  Remember current conflicting definitions on the preprocessor stack
    //  Undefine current conflicting definitions
    #endif
    #include "mcsconfig.h"
    #include "m_ctype.h"
    #if defined(PREFER_MY_CONFIG_H) && defined(MY_CONFIG_H)
    #    Restore conflicting definitions from the preprocessor stack
    #endif

  and can be included as follows:

  a. using only mcsconfig.h as a configuration header:

    // my_config.h must not be included so far
    #include "collation.h"

  b. using my_config.h as the first included configuration file:

    #define PREFER_MY_CONFIG_H // Force conflict resolution
    #include "my_config.h"     // can be included directly or indirectly
    ...
    #include "collation.h"

Other changes:

- Adding helper header files
     utils/common/mcsconfig_conflicting_defs_remember.h
     utils/common/mcsconfig_conflicting_defs_restore.h
     utils/common/mcsconfig_conflicting_defs_undef.h
  to perform conflict resolution easier.

- Removing `#include "collation.h"` from a number of files,
  as it's automatically included from rowgroup.h.

- Removing redundant `#include "utils_utf8.h"`.
  This change is not directly related to the problem being fixed,
  but it's nice to remove redundant directives for both collation.h
  and utils_utf8.h from all the files that do not really need them.
  (this change could probably have gone as a separate commit)

- Changing my_init() to MY_INIT(argv[0]) in the MCS services sources.
  After the fix of the complitation failure it appeared that ColumnStore
  services compiled with the debug build crash due to recent changes in
  safemalloc. The crash happened in strcmp() with `my_progname` as an argument
  (where my_progname is a mysys global variable). This problem should
  probably be fixed on the server side as well to avoid passing NULL.
  But, the majority of MariaDB executable programs also use MY_INIT(argv[0])
  rather than my_init(). So let's make MCS do like the other programs do.
2021-05-25 12:34:36 +04:00
David Hall
951a6abe85 MCOL-4330 dev Refresh shared memory
If the plugin is restarted after the system is running, it's possible to have stale references to shared memory. This patch deletes those references so the next time they're used, just-in-time initialization will get the latest.
2020-10-01 18:19:03 -05:00
Andrew Hutchings
9e588039d5 Merge pull request #1010 from tntnatbry/MCOL-3680
MCOL-3680 mysqld will abort if Columnstore.xml is missing.
Conflicts:
	dbcon/mysql/ha_mcs.cpp
2020-02-28 13:58:00 -05:00
Andrew Hutchings
a959aad92d MariaDB 10.5 Compatibility
Several changes have happened in MariaDB 10.5, most notably:

* Information Schema table definitions have changed
* More things use LEX_CSTRING

This fixes all the compile issues
2020-01-13 10:47:14 -08:00
Andrew Hutchings
e072bf9e9b MCOL-3628 Move I_S tables into main handler lib
The I_S tables are all now in ha_columnstore.so
2019-12-03 21:21:28 +00:00
Patrick LeBlanc
a09a9d5d0f Mass substitution 'Corporaton' -> 'Corporation' 2019-08-07 14:43:25 -05:00
Roman Nozdrin
9dc33c4e82 Another try to cope with warnings under gcc 8.2. 2019-04-29 11:05:03 +03:00
Andrew Hutchings
95c4f17b0a Merge branch 'develop-1.1' into 1.2-merge-up-20190122 2019-01-22 08:26:26 +00:00
Roman Nozdrin
771988dd1f MCOL-2052 IS.columnstore_files now prints correct number of records for any relation out.
Return statement called in generate_result() returns too early.
2019-01-15 10:18:25 +03:00
Andrew Hutchings
443a2867c4 MCOL-1385 Initial 10.3 support 2018-08-02 14:55:01 +01:00
Andrew Hutchings
8c90419852 Fix merge and coding style issues 2018-06-22 15:31:31 +01:00
Andrew Hutchings
7ca289ded9 Merge branch 'develop-1.1' into 1.1-merge-up-20180621 2018-06-22 14:51:20 +01:00
Andrew Hutchings
d3d322ed7b MCOL-1484 I_S condition pushdowns
Add condition pushdowns to the information_schema tables to give a
performance improvement when a relevant WHERE condition is provided. In
addition there is a new table_usage() stored procedure designed to use
the pushdowns.
2018-06-19 15:12:44 +01:00
Andrew Hutchings
0d7c0f7ae4 Merge branch 'develop-1.1' into dev-merge-up-20180202 2018-02-02 14:53:36 +00:00
Andrew Hutchings
e9aff27e59 MCOL-1116 Fix I_S.CS_FILES for missing dbroot
If a dbroot is missing/offline mysqld would crash on
information_schema.columnstore_files due to not catching an exception.
This patch now catches the exception.
2017-12-15 20:33:07 +00:00
Andrew Hutchings
01446d1e22 Reformat all code to coding standard 2017-10-26 17:18:17 +01:00
Andrew Hutchings
f64dd0d602 MCOL-529 Pool DBRM connections
DBRM connections are reused so that we don't have a huge amount of
TIME_WAIT sockets when there are large amounts of DML. Also applied to
i_s.columnstore_files
2017-04-14 14:16:25 +01:00
Andrew Hutchings
830b24c1fa MCOL-529 Pool DBRM connections
DBRM connections are reused so that we don't have a huge amount of
TIME_WAIT sockets when there are large amounts of DML. Also applied to
i_s.columnstore_files
2017-04-14 14:13:15 +01:00
Andrew Hutchings
6841b261a3 MCOL-605 Fix multi-node "Unkown error"
The string stream which builds up the PM details wasn't cleared on each
run. This moves the creation of the string stream up to where it is
needed so a clean one is used each time.
2017-03-22 17:48:27 +00:00
Andrew Hutchings
6ab434e708 MCOL-605 Fix multi-node "Unkown error"
The string stream which builds up the PM details wasn't cleared on each
run. This moves the creation of the string stream up to where it is
needed so a clean one is used each time.
2017-03-22 17:45:45 +00:00
Andrew Hutchings
b55c526a5d MCOL-605 limit connections for I_S table
I_S.COLUMNSTORE_FILES now caches a connection per dbroot instead of
using a connection per file.
2017-03-07 21:16:41 +00:00
Andrew Hutchings
468fc8c260 MCOL-605 limit connections for I_S table
I_S.COLUMNSTORE_FILES now caches a connection per dbroot instead of
using a connection per file.
2017-03-05 09:58:20 +00:00
Andrew Hutchings
025838629b MCOL-454 I_S.COLUMNSTORE_FILES multi-node
I_S.COLUMNSTORE_FILES returned bad filenames and NULL file sizes when
there are multiple nodes in a ColumnStore cluster

It adds an extra message call to the WriteEngine to get the file size
for that file. The I_S function will figure out which WriteEngine to
communicate with and get the file size details from it.
2016-12-14 16:55:03 +00:00
Andrew Hutchings
3b1de94cd8 MCOL-406 Improved Information Schema
* Add INFORMATION_SCHEMA.COLUMNSTORE_FILES which contains information
  about files
* Remove file information from COLUMNSTORE_EXTENTS (due to above)
* Hide columns with Object ID < 3000 (internal columns)
* Fix bad calculation in data_size columns
* Fix minor memory leak
* Add compressedSize() function to IDBFileSystem to get the used file
  size for a compressed file
* Add columnstore_info schema with utility stored procedures to access
  the information_schema tables
2016-11-23 22:11:26 +00:00