Commit graph

65 commits

Author SHA1 Message Date
Monty
5a759d31f7 Changing field::field_name and Item::name to LEX_CSTRING
Benefits of this patch:
- Removed a lot of calls to strlen(), especially for field_string
- Strings generated by parser are now const strings, less chance of
  accidently changing a string
- Removed a lot of calls with LEX_STRING as parameter (changed to pointer)
- More uniform code
- Item::name_length was not kept up to date. Now fixed
- Several bugs found and fixed (Access to null pointers,
  access of freed memory, wrong arguments to printf like functions)
- Removed a lot of casts from (const char*) to (char*)

Changes:
- This caused some ABI changes
  - lex_string_set now uses LEX_CSTRING
  - Some fucntions are now taking const char* instead of char*
- Create_field::change and after changed to LEX_CSTRING
- handler::connect_string, comment and engine_name() changed to LEX_CSTRING
- Checked printf() related calls to find bugs. Found and fixed several
  errors in old code.
- A lot of changes from LEX_STRING to LEX_CSTRING, especially related to
  parsing and events.
- Some changes from LEX_STRING and LEX_STRING & to LEX_CSTRING*
- Some changes for char* to const char*
- Added printf argument checking for my_snprintf()
- Introduced null_clex_str, star_clex_string, temp_lex_str to simplify
  code
- Added item_empty_name and item_used_name to be able to distingush between
  items that was given an empty name and items that was not given a name
  This is used in sql_yacc.yy to know when to give an item a name.
- select table_name."*' is not anymore same as table_name.*
- removed not used function Item::rename()
- Added comparision of item->name_length before some calls to
  my_strcasecmp() to speed up comparison
- Moved Item_sp_variable::make_field() from item.h to item.cc
- Some minimal code changes to avoid copying to const char *
- Fixed wrong error message in wsrep_mysql_parse()
- Fixed wrong code in find_field_in_natural_join() where real_item() was
  set when it shouldn't
- ER_ERROR_ON_RENAME was used with extra arguments.
- Removed some (wrong) ER_OUTOFMEMORY, as alloc_root will already
  give the error.

TODO:
- Check possible unsafe casts in plugin/auth_examples/qa_auth_interface.c
- Change code to not modify LEX_CSTRING for database name
  (as part of lower_case_table_names)
2017-04-23 22:35:46 +03:00
Monty
e6c11717bf Fixed wrong prototype in ha_cassandra.cc that broke linking 2017-04-19 22:30:55 +03:00
iangilfillan
f0ec34002a Correct FSF address 2017-03-10 18:21:29 +01:00
Monty
dfac82e44d Fixed failing tests and compiler warnings
- UNINIT_VAR() was required for 4.8.3 on openSUSE 13.2
2015-08-18 11:18:58 +03:00
Dinar Valeev
71bbff8de3 Fix BigEndian build
On BigEndian build fails with:
[ 109s]
/home/abuild/rpmbuild/BUILD/mariadb-10.0.17/storage/cassandra/ha_cassandra.cc:890:22:
error: invalid conversion from 'longlong*
{aka long long int*}

' to 'long long int' [-fpermissive]
[ 109s] value->x.long_value= (longlong *)*cass_data;
[ 109s] ^

This commit fixes it

Signed-off-by: Dinar Valeev <dvaleev@suse.com>
2015-03-25 17:21:52 +01:00
Sergei Golubchik
a7a60f6f33 compilation failure: ha_cassandra 2014-10-11 09:09:18 +02:00
Sergei Golubchik
1fa1ea0f2d MDEV-5404 Can't free data returned by mariadb_dyncol_unpack on windows
add mariadb_dyncol_unpack_free()
2014-03-19 09:58:18 +01:00
Sergei Golubchik
b7b5f6f1ab 10.0-monty merge
includes:
* remove some remnants of "Bug#14521864: MYSQL 5.1 TO 5.5 BUGS PARTITIONING"
* introduce LOCK_share, now LOCK_ha_data is strictly for engines
* rea_create_table() always creates .par file (even in "frm-only" mode)
* fix a 5.6 bug, temp file leak on dummy ALTER TABLE
2013-07-21 16:39:19 +02:00
unknown
47da65eed3 Cassandra SE build fix for merge. 2013-06-17 09:14:58 +03:00
Michael Widenius
5f1f2fc0e4 Applied all changes from Igor and Sanja 2013-06-15 18:32:08 +03:00
Sergey Petrunya
38c611ed59 MDEV-4001: Cassandra: server crashes in ha_cassandra::end_bulk_insert on INSERT .. SELECT with a non-existing column
- INSERT ... SELECT may call handler->end_bulk_insert() without having
  called handler->start_bulk_insert(). Let Cassandra SE handle this.
2013-05-28 13:32:39 +04:00
Sergey Petrunya
c00a37d113 MDEV-4443: Cassandra SE: ERROR 1928 (HY000): Internal error: 'Thrift exception: Called write on non-open socket'
- Made call re-try system also handle network disconnects (it will reconnect before retrying)
- Added Cassandra_network_exceptions counter.
- @@cassandra_failure_retries is now always honored.
2013-05-28 12:38:22 +04:00
Sergey Petrunya
52045d40d4 MDEV-4000: Mapping between Cassandra blob (BytesType) and MySQL BLOB does not work
- Allow SQL blobs in the data mapping.
2013-05-20 08:37:03 +04:00
Sergei Golubchik
a9035be5b7 10.0-base merge 2013-04-15 15:09:22 +02:00
Sergei Golubchik
775e82638b put status variables in the proper pluginname_ scope
(but support the scopeless mysql style too).
always output status/system variables in the correct lettercase
2013-04-09 23:27:33 +02:00
Sergei Golubchik
58e62d701e * move bas_ext from the handler to the handlerton
* provide a default bas_ext value of the empty list
2013-04-07 17:08:49 +02:00
Sergei Golubchik
ab83952f29 10.0-base merge 2013-01-31 09:48:19 +01:00
Sergei Golubchik
a48c2f461e fix ha_cassandra to compile 2013-01-24 17:52:25 +01:00
Sergei Golubchik
e3f08e7e0b cleanup: remove unused init_dynamic_array and init_dynamic_array2 symbols,
as only my_init_dynamic_array and my_init_dynamic_array2 are used everywhere.
fix ha_cassandra to compile.
2013-01-23 16:18:53 +01:00
unknown
655e304531 MDEV-4005 fix.
Field matching fixed.
DBUG_ASSERT fixed.
2013-01-09 08:10:48 +02:00
Sergey Petrunya
ffd5f8c8d4 Post-merge fixes:
- update ha_cassandra::start_bulk_insert() definition to match those in class handler.
2012-12-24 08:36:22 +04:00
unknown
61412c0c31 pre-merge 2012-12-23 23:37:11 +02:00
unknown
40ae63dd65 backport to 5.5 dyncol changes and names support 2012-12-23 20:57:54 +02:00
Sergey Petrunya
28c9e1a550 Cassandra Storage Engine: Address review feedback part #3
- Cleanup ha_cassandra::store_lock()
- Remove dummy ha_cassandra::delete_table()
- Add HA_TABLE_SCAN_ON_INDEX to table_flags()
2012-12-20 14:30:09 +04:00
Sergey Petrunya
6b47b2fe98 Cassandra Storage Engine: Address review feedback part # 2
- Register counters directly in the array passed to maria_declare_plugin. As 
  a consequence, FLUSH TABLES will reset the counters.
- Update test results accordingly.
2012-12-20 14:15:56 +04:00
Sergey Petrunya
7e5ef40779 Cassandra Storage Engine:
- Partially address review feedback.
- Update cassandra.test result result
- make cassandra.test timezone-agnostic
2012-12-20 13:10:09 +04:00
unknown
ce8484548b Fix of MDEV-565: Server crashes in ha_cassandra::write_row on inserting NULL into a dynamic column
Fixed incorrect initialization of variable which caused freeing memory by random address in case of error.
2012-09-29 16:01:24 +03:00
Sergey Petrunya
40d62823cd Fix compile warnings 2012-09-28 14:01:52 +04:00
unknown
3f8eaf7e87 Ending spaces removed. 2012-09-28 15:30:49 +03:00
unknown
245298f25d MDEV-506 Cassandra dynamic columns access 2012-09-28 15:27:16 +03:00
Sergey Petrunya
4db207d56d Cassandra SE: lazy connections
- Don't connect right away in ha_cassandra::open. If we do this, it becomes 
  impossible to do SHOW CREATE TABLE when the server is not present. 
- Note: CREATE TABLE still requires that connection is present, as it needs 
  to check whether the specified DDL can be used with Cassandra.  We could
  delay that check also, but then one would not be able to find out about 
  errors in table DDL until they do a SELECT.
2012-09-27 16:08:28 +04:00
Sergey Petrunya
2d88c4befb Cassandra SE
- Support UPDATE statements
- Follow what CQL does: don't show deleted rows (they show up as rows without any columns in reads)
2012-09-27 11:59:14 +04:00
Sergey Petrunya
c69a8fa616 - Update testcases
- Better error messages.
2012-09-26 19:02:12 +04:00
Sergey Petrunya
0362968be8 Cassandra SE:
- Add a test for ALTER TABLE
2012-09-26 14:57:45 +04:00
Sergey Petrunya
344c0ea423 Cassandra SE: Add capability to retry failed API calls
- Add capability to retry calls that have failed with UnavailableException or
  [Cassandra's] TimedOutException. 
- We don't retry for Thrift errors yet, although could easily do, now.
2012-09-26 14:13:03 +04:00
Sergey Petrunya
73dfd5782b Cassandra SE: more datatypes support
- Support mapping Cassandra's timestamp to INT64
- Support mapping Cassadnra's decimal to VARBINARY.
2012-09-25 16:20:19 +04:00
Sergey Petrunya
366638718c Cassandra SE: varint datatype support:
- allow only VARBINARY(n), all other types can get meaningless data after conversions
- more comments
2012-09-24 20:58:26 +04:00
Sergey Petrunya
bce2e6683a Cassandra SE
- Add support for Cassandra's 'varint' datatype, mappable to VARBINARY.
2012-09-24 19:15:12 +04:00
Sergey Petrunya
c59faf95ae Cassandra SE: make consistency settings user-settable. 2012-09-22 23:30:29 +04:00
Sergey Petrunya
004e024775 Cassandra SE:
- Added @@cassandra_thrift_host global variable.
2012-09-20 14:22:36 +04:00
Sergey Petrunya
eb63b07ace Cassandra SE:
- added option thrift_port which allows to specify which port to connect to
- not adding username/password - it turns out, there are no authentication
  schemes in stock cassandra distribution.
2012-09-16 12:22:21 +04:00
Sergey Petrunya
c3de7c977a MDEV-530: Cassandra SE: Locking is incorrect
- Use more permissive locking.
2012-09-14 09:25:42 +04:00
Sergey Petrunya
16fec32ecc Cassandra SE: small optimization: StringCopyConverter::mariadb_to_cassandra doesn't need to make NULL-terminated strings. 2012-09-12 20:52:23 +04:00
Sergey Petrunya
a3f33268ec Cassandra SE: add support for reading counter type values 2012-09-10 14:40:07 +04:00
Sergey Petrunya
4986de84ad Cassandra SE: added support for boolean type. 2012-09-07 15:32:43 +04:00
Sergey Petrunya
12ab6a4f3c MDEV-498: Cassandra: Inserting a timestamp does not work on a 32-bit system
- Make an attempt at fixing.
2012-08-31 11:03:59 +04:00
Sergey Petrunya
6cce520472 Cassandra SE
- add support for Cassandra's UUID datatype. We map it to CHAR(36).
2012-08-31 10:49:36 +04:00
Sergey Petrunya
6a827daf61 Fix for the previous cset: Field::store_TIME() accepts microseconds fraction, not millisecond. 2012-08-29 11:14:04 +04:00
Sergey Petrunya
fd53cbbff6 Cassandra SE: Timestamp data type support. 2012-08-29 11:05:46 +04:00
Sergey Petrunya
22e71e4cc1 Cassandra SE
- Add mapping for INT datatype
- Primary key column should now be named like CQL's primary key, 
  or 'rowkey' if CF has key_alias.
2012-08-29 10:05:21 +04:00