1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

Portability fixes for Fortre C++ 5.0 (on Sun) in 32 and 64 bit modes.

client/mysqlbinlog.cc:
  Portability fix
configure.in:
  Added use of ASFLAGS (For Solaris with Forte 5.0)
include/my_global.h:
  Portability fix
include/myisam.h:
  Portability fix
include/queues.h:
  Portability fix
innobase/include/ut0ut.h:
  Portability fix
innobase/log/log0log.c:
  Portability fix
innobase/rem/rem0cmp.c:
  Portability fix
innobase/trx/trx0sys.c:
  Portability fix
isam/pack_isam.c:
  Portability fix
myisam/ft_boolean_search.c:
  Portability fix
myisam/mi_dynrec.c:
  Code change to go around bug in Forte 5.0
myisam/sort.c:
  Portability fix
mysys/my_aes.c:
  Portability fix
scripts/Makefile.am:
  Support for ASFLAGS
scripts/mysqlbug.sh:
  Support for ASFLAGS
sql/field.cc:
  Portability fix
sql/filesort.cc:
  Portability fix
sql/gen_lex_hash.cc:
  Portability fix
sql/ha_innodb.cc:
  Portability fix
  Changed SHOW INNODB STATUS to return error instead of writing message to log file.
sql/ha_isammrg.cc:
  Portability fix
sql/ha_myisam.cc:
  Portability fix
sql/ha_myisammrg.cc:
  Portability fix
sql/hash_filo.h:
  Portability fix
sql/hostname.cc:
  Portability fix
sql/item_cmpfunc.h:
  Indentation change
sql/item_func.cc:
  Portability fix
sql/item_func.h:
  Portability fix
sql/log.cc:
  Portability fix
sql/log_event.cc:
  Portability fix
sql/mysql_priv.h:
  Portability fix
sql/mysqld.cc:
  Portability fix
  Fixed bug with rpl_recovery_rank command line option on 64 bit systems
sql/opt_range.cc:
  Portability fix
sql/repl_failsafe.cc:
  Portability fix
sql/slave.cc:
  Portability fix
sql/slave.h:
  Portability fix
sql/sql_acl.cc:
  Portability fix
sql/sql_base.cc:
  Portability fix
sql/sql_cache.cc:
  Portability fix
sql/sql_cache.h:
  Portability fix
sql/sql_class.cc:
  Portability fix
sql/sql_delete.cc:
  Portability fix
sql/sql_insert.cc:
  Portability fix
sql/sql_manager.cc:
  Portability fix
sql/sql_parse.cc:
  Portability fix
BUILD/compile-solaris-sparc-forte:
  C
sql/sql_udf.cc:
  Portability fix
sql/sql_update.cc:
  Portability fix
strings/Makefile.am:
  Portability fix
strings/bmove_upp-sparc.s:
  Fix so that this works on 32 and 64 bit sparcs
strings/str_test.c:
  Cleanup
strings/strappend-sparc.s:
  Fix so that this works on 32 and 64 bit sparcs
strings/strend-sparc.s:
  Fix so that this works on 32 and 64 bit sparcs
strings/strmake-sparc.s:
  Fix so that this works on 32 and 64 bit sparcs
strings/strmov-sparc.s:
  Fix so that this works on 32 and 64 bit sparcs
strings/strnmov-sparc.s:
  Fix so that this works on 32 and 64 bit sparcs
strings/strstr-sparc.s:
  Fix so that this works on 32 and 64 bit sparcs
strings/strxmov-sparc.s:
  Fixes to make this more portable, but it's still not usable on 64 bit systems :(
BitKeeper/etc/logging_ok:
  Logging to logging@openlogging.org accepted
This commit is contained in:
unknown
2002-11-07 03:54:00 +02:00
parent 841fa6f694
commit c88b910208
60 changed files with 485 additions and 424 deletions

View File

@ -458,33 +458,6 @@ byte *query_cache_table_get_key(const byte *record, uint *length,
Query_cache_query methods
*****************************************************************************/
void Query_cache_query::init_n_lock()
{
DBUG_ENTER("Query_cache_query::init_n_lock");
res=0; wri = 0; len = 0;
my_rwlock_init(&lock, NULL);
lock_writing();
DBUG_PRINT("qcache", ("inited & locked query for block 0x%lx",
((byte*) this)-ALIGN_SIZE(sizeof(Query_cache_block))));
DBUG_VOID_RETURN;
}
void Query_cache_query::unlock_n_destroy()
{
DBUG_ENTER("Query_cache_query::unlock_n_destroy");
DBUG_PRINT("qcache", ("destroyed & unlocked query for block 0x%lx",
((byte*)this)-ALIGN_SIZE(sizeof(Query_cache_block))));
/*
The following call is not needed on system where one can destroy an
active semaphore
*/
this->unlock_writing();
rwlock_destroy(&lock);
DBUG_VOID_RETURN;
}
/*
Following methods work for block read/write locking only in this
particular case and in interaction with structure_guard_mutex.
@ -536,6 +509,34 @@ inline void Query_cache_query::unlock_reading()
RW_UNLOCK(&lock);
}
void Query_cache_query::init_n_lock()
{
DBUG_ENTER("Query_cache_query::init_n_lock");
res=0; wri = 0; len = 0;
my_rwlock_init(&lock, NULL);
lock_writing();
DBUG_PRINT("qcache", ("inited & locked query for block 0x%lx",
((byte*) this)-ALIGN_SIZE(sizeof(Query_cache_block))));
DBUG_VOID_RETURN;
}
void Query_cache_query::unlock_n_destroy()
{
DBUG_ENTER("Query_cache_query::unlock_n_destroy");
DBUG_PRINT("qcache", ("destroyed & unlocked query for block 0x%lx",
((byte*)this)-ALIGN_SIZE(sizeof(Query_cache_block))));
/*
The following call is not needed on system where one can destroy an
active semaphore
*/
this->unlock_writing();
rwlock_destroy(&lock);
DBUG_VOID_RETURN;
}
extern "C"
{
byte *query_cache_query_get_key(const byte *record, uint *length,
@ -699,19 +700,19 @@ void query_cache_invalidate_by_MyISAM_filename(const char *filename)
Query_cache methods
*****************************************************************************/
Query_cache::Query_cache(ulong query_cache_limit,
ulong min_allocation_unit,
ulong min_result_data_size,
uint def_query_hash_size ,
uint def_table_hash_size)
Query_cache::Query_cache(ulong query_cache_limit_arg,
ulong min_allocation_unit_arg,
ulong min_result_data_size_arg,
uint def_query_hash_size_arg,
uint def_table_hash_size_arg)
:query_cache_size(0),
query_cache_limit(query_cache_limit),
query_cache_limit(query_cache_limit_arg),
queries_in_cache(0), hits(0), inserts(0), refused(0),
total_blocks(0),
min_allocation_unit(ALIGN_SIZE(min_allocation_unit)),
min_result_data_size(ALIGN_SIZE(min_result_data_size)),
def_query_hash_size(ALIGN_SIZE(def_query_hash_size)),
def_table_hash_size(ALIGN_SIZE(def_table_hash_size)),
min_allocation_unit(ALIGN_SIZE(min_allocation_unit_arg)),
min_result_data_size(ALIGN_SIZE(min_result_data_size_arg)),
def_query_hash_size(ALIGN_SIZE(def_query_hash_size_arg)),
def_table_hash_size(ALIGN_SIZE(def_table_hash_size_arg)),
initialized(0)
{
ulong min_needed= (ALIGN_SIZE(sizeof(Query_cache_block)) +
@ -736,13 +737,13 @@ ulong Query_cache::resize(ulong query_cache_size_arg)
void Query_cache::store_query(THD *thd, TABLE_LIST *tables_used)
{
TABLE_COUNTER_TYPE tables;
TABLE_COUNTER_TYPE local_tables;
ulong tot_length;
DBUG_ENTER("Query_cache::store_query");
if (query_cache_size == 0)
DBUG_VOID_RETURN;
if ((tables = is_cacheable(thd, thd->query_length,
if ((local_tables = is_cacheable(thd, thd->query_length,
thd->query, &thd->lex, tables_used)))
{
NET *net = &thd->net;
@ -788,7 +789,7 @@ void Query_cache::store_query(THD *thd, TABLE_LIST *tables_used)
Query_cache_block *query_block;
query_block= write_block_data(tot_length, (gptr) thd->query,
ALIGN_SIZE(sizeof(Query_cache_query)),
Query_cache_block::QUERY, tables, 1);
Query_cache_block::QUERY, local_tables, 1);
if (query_block != 0)
{
DBUG_PRINT("qcache", ("query block 0x%lx allocated, %lu",
@ -805,7 +806,7 @@ void Query_cache::store_query(THD *thd, TABLE_LIST *tables_used)
STRUCT_UNLOCK(&structure_guard_mutex);
goto end;
}
if (!register_all_tables(query_block, tables_used, tables))
if (!register_all_tables(query_block, tables_used, local_tables))
{
refused++;
DBUG_PRINT("warning", ("tables list including failed"));
@ -1780,7 +1781,7 @@ inline ulong Query_cache::get_min_append_result_data_size()
my_bool Query_cache::allocate_data_chain(Query_cache_block **result_block,
ulong data_len,
Query_cache_block *query_block,
my_bool first_block)
my_bool first_block_arg)
{
ulong all_headers_len = (ALIGN_SIZE(sizeof(Query_cache_block)) +
ALIGN_SIZE(sizeof(Query_cache_result)));
@ -1790,7 +1791,7 @@ my_bool Query_cache::allocate_data_chain(Query_cache_block **result_block,
DBUG_PRINT("qcache", ("data_len %lu, all_headers_len %lu",
data_len, all_headers_len));
ulong min_size = (first_block ?
ulong min_size = (first_block_arg ?
get_min_first_result_data_size():
get_min_append_result_data_size());
*result_block = allocate_block(max(min_size, align_len),
@ -1817,7 +1818,7 @@ my_bool Query_cache::allocate_data_chain(Query_cache_block **result_block,
Query_cache_block *next_block;
if ((success = allocate_data_chain(&next_block,
len - new_block->length,
query_block, first_block)))
query_block, first_block_arg)))
double_linked_list_join(new_block, next_block);
}
if (success)
@ -1886,14 +1887,23 @@ void Query_cache::invalidate_table(Query_cache_block *table_block)
}
}
/*
Store all used tables
SYNOPSIS
register_all_tables()
block Store tables in this block
tables_used List if used tables
tables_arg Not used ?
*/
my_bool Query_cache::register_all_tables(Query_cache_block *block,
TABLE_LIST *tables_used,
TABLE_COUNTER_TYPE tables)
TABLE_COUNTER_TYPE tables_arg)
{
TABLE_COUNTER_TYPE n;
DBUG_PRINT("qcache", ("register tables block 0x%lx, n %d, header %x",
(ulong) block, (int) tables,
(ulong) block, (int) tables_arg,
(int) ALIGN_SIZE(sizeof(Query_cache_block))));
Query_cache_block_table *block_table = block->table(0);
@ -2185,28 +2195,28 @@ void Query_cache::split_block(Query_cache_block *block, ulong len)
Query_cache_block *
Query_cache::join_free_blocks(Query_cache_block *first_block,
Query_cache::join_free_blocks(Query_cache_block *first_block_arg,
Query_cache_block *block_in_list)
{
Query_cache_block *second_block;
DBUG_ENTER("Query_cache::join_free_blocks");
DBUG_PRINT("qcache",
("join first 0x%lx, pnext 0x%lx, in list 0x%lx",
(ulong) first_block, (ulong) first_block->pnext,
(ulong) first_block_arg, (ulong) first_block_arg->pnext,
(ulong) block_in_list));
exclude_from_free_memory_list(block_in_list);
second_block = first_block->pnext;
second_block = first_block_arg->pnext;
// May be was not free block
second_block->used=0;
second_block->destroy();
total_blocks--;
first_block->length += second_block->length;
first_block->pnext = second_block->pnext;
second_block->pnext->pprev = first_block;
first_block_arg->length += second_block->length;
first_block_arg->pnext = second_block->pnext;
second_block->pnext->pprev = first_block_arg;
DBUG_RETURN(first_block);
DBUG_RETURN(first_block_arg);
}
@ -2423,7 +2433,7 @@ TABLE_COUNTER_TYPE Query_cache::is_cacheable(THD *thd, uint32 query_len,
char *query,
LEX *lex, TABLE_LIST *tables_used)
{
TABLE_COUNTER_TYPE tables = 0;
TABLE_COUNTER_TYPE table_count = 0;
DBUG_ENTER("Query_cache::is_cacheable");
if (lex->sql_command == SQLCOM_SELECT &&
@ -2440,7 +2450,7 @@ TABLE_COUNTER_TYPE Query_cache::is_cacheable(THD *thd, uint32 query_len,
for (; tables_used; tables_used= tables_used->next)
{
tables++;
table_count++;
DBUG_PRINT("qcache", ("table %s, db %s, type %u",
tables_used->real_name,
tables_used->db, tables_used->table->db_type));
@ -2464,7 +2474,7 @@ TABLE_COUNTER_TYPE Query_cache::is_cacheable(THD *thd, uint32 query_len,
{
ha_myisammrg *handler = (ha_myisammrg *)tables_used->table->file;
MYRG_INFO *file = handler->myrg_info();
tables+= (file->end_table - file->open_tables);
table_count+= (file->end_table - file->open_tables);
}
}
@ -2474,8 +2484,8 @@ TABLE_COUNTER_TYPE Query_cache::is_cacheable(THD *thd, uint32 query_len,
DBUG_PRINT("qcache", ("not in autocommin mode"));
DBUG_RETURN(0);
}
DBUG_PRINT("qcache", ("select is using %d tables", tables));
DBUG_RETURN(tables);
DBUG_PRINT("qcache", ("select is using %d tables", table_count));
DBUG_RETURN(table_count);
}
DBUG_PRINT("qcache",