您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ DBUG_ASSERT函数代码示例

51自学网 2021-06-01 20:18:35
  C++
这篇教程C++ DBUG_ASSERT函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中DBUG_ASSERT函数的典型用法代码示例。如果您正苦于以下问题:C++ DBUG_ASSERT函数的具体用法?C++ DBUG_ASSERT怎么用?C++ DBUG_ASSERT使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了DBUG_ASSERT函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: my_chmod

my_bool my_chmod(const char *filename, ulong perm_flags, myf my_flags){  int ret_val;  MY_MODE file_perm;  DBUG_ENTER("my_chmod");  DBUG_ASSERT(filename && filename[0]);  file_perm= get_file_perm(perm_flags);#ifdef _WIN32  ret_val= _chmod(filename, file_perm);#else  ret_val= chmod(filename, file_perm);#endif  if (ret_val && (my_flags & (MY_FAE+MY_WME)))  {    char errbuf[MYSYS_STRERROR_SIZE];    set_my_errno(errno);    my_error(EE_CHANGE_PERMISSIONS, MYF(0), filename,             errno, my_strerror(errbuf, sizeof(errbuf), errno));  }  DBUG_RETURN(ret_val ? TRUE : FALSE);}
开发者ID:Longhui,项目名称:mysql-5.7.9-readcode,代码行数:24,


示例2: DBUG_ENTER

/*   allocates a new ssl object   SYNOPSIS     my_ssl_init       mysql     connection object   RETURN VALUES     NULL on error     SSL  new SSL object*/SSL *my_ssl_init(MYSQL *mysql){    int verify;    SSL *ssl= NULL;    DBUG_ENTER("my_ssl_init");    DBUG_ASSERT(mysql->net.vio->ssl == NULL);    if (!my_ssl_initialized)        my_ssl_start(mysql);    pthread_mutex_lock(&LOCK_ssl_config);    if (my_ssl_set_certs(mysql))        goto error;    if (!(ssl= SSL_new(SSL_context)))        goto error;    if (!SSL_set_app_data(ssl, mysql))        goto error;    verify= (!mysql->options.ssl_ca && !mysql->options.ssl_capath) ?            SSL_VERIFY_NONE : SSL_VERIFY_PEER;    SSL_CTX_set_verify(SSL_context, verify, my_verify_callback);    SSL_CTX_set_verify_depth(SSL_context, 1);    pthread_mutex_unlock(&LOCK_ssl_config);    DBUG_RETURN(ssl);error:    pthread_mutex_unlock(&LOCK_ssl_config);    if (ssl)        SSL_free(ssl);    DBUG_RETURN(NULL);}
开发者ID:MarianMMX,项目名称:MarianMMX,代码行数:47,


示例3: my_rw_unlock

int my_rw_unlock(my_rw_lock_t *rwp){#ifdef _WIN32  if (have_srwlock)    return srw_unlock(rwp);#endif  DBUG_PRINT("rw_unlock",	     ("state: %d waiters: %d", rwp->state, rwp->waiters));  pthread_mutex_lock(&rwp->lock);  DBUG_ASSERT(rwp->state != 0);  if (rwp->state == -1)		/* writer releasing */  {    my_rw_lock_assert_write_owner(rwp);    rwp->state= 0;		/* mark as available */#ifdef SAFE_MUTEX    rwp->write_thread= 0;#endif    if ( rwp->waiters )		/* writers queued */      pthread_cond_signal( &rwp->writers );    else      pthread_cond_broadcast( &rwp->readers );  }  else  {    if ( --rwp->state == 0 &&   /* no more readers */        rwp->waiters)      pthread_cond_signal( &rwp->writers );  }  pthread_mutex_unlock( &rwp->lock );  return(0);}
开发者ID:XEQT,项目名称:SkyFireEMU,代码行数:36,


示例4: win_init_time

static void win_init_time(void){  /* The following is used by time functions */  FILETIME ft;  LARGE_INTEGER li, t_cnt;  DBUG_ASSERT(sizeof(LARGE_INTEGER) == sizeof(query_performance_frequency));  if (QueryPerformanceFrequency((LARGE_INTEGER *)&query_performance_frequency) == 0)    query_performance_frequency= 0;  else  {    GetSystemTimeAsFileTime(&ft);    li.LowPart=  ft.dwLowDateTime;    li.HighPart= ft.dwHighDateTime;    query_performance_offset= li.QuadPart-OFFSET_TO_EPOC;    QueryPerformanceCounter(&t_cnt);    query_performance_offset-= (t_cnt.QuadPart /                                query_performance_frequency * MS +                                t_cnt.QuadPart %                                query_performance_frequency * MS /                                query_performance_frequency);  }}
开发者ID:Blumfield,项目名称:TBCPvP,代码行数:24,


示例5: switch

/***************************************************************************** * int indxInit(); * * Return Value:  Return 0 : init was successful. *                Return -1: In all other case.   * Remark:        Initiates operation record after allocation. *****************************************************************************/intNdbIndexOperation::indxInit(const NdbIndexImpl * anIndex,			    const NdbTableImpl * aTable, 			    NdbTransaction* myConnection,                            bool useRec){  NdbOperation::init(aTable, myConnection, useRec);  switch (anIndex->m_type) {  case(NdbDictionary::Index::UniqueHashIndex):    break;  case(NdbDictionary::Index::Undefined):  case(NdbDictionary::Index::OrderedIndex):    setErrorCodeAbort(4003);    return -1;  default:    DBUG_ASSERT(0);    break;  }  m_theIndex = anIndex;  m_accessTable = anIndex->m_table;  theNoOfTupKeyLeft = m_accessTable->getNoOfPrimaryKeys();  return 0;}
开发者ID:Cona19,项目名称:mysql5.6.24-improve,代码行数:31,


示例6: unpack_row_old

intunpack_row_old(Relay_log_info *rli,               TABLE *table, uint const colcnt, uchar *record,               uchar const *row, MY_BITMAP const *cols,               uchar const **row_end, ulong *master_reclength,               MY_BITMAP* const rw_set, Log_event_type const event_type){  DBUG_ASSERT(record && row);  my_ptrdiff_t const offset= record - (uchar*) table->record[0];  size_t master_null_bytes= table->s->null_bytes;  if (colcnt != table->s->fields)  {    Field **fptr= &table->field[colcnt-1];    do      master_null_bytes= (*fptr)->last_null_byte();    while (master_null_bytes == Field::LAST_NULL_BYTE_UNDEF &&           fptr-- > table->field);    /*      If master_null_bytes is LAST_NULL_BYTE_UNDEF (0) at this time,      there were no nullable fields nor BIT fields at all in the      columns that are common to the master and the slave. In that      case, there is only one null byte holding the X bit.      OBSERVE! There might still be nullable columns following the      common columns, so table->s->null_bytes might be greater than 1.     */    if (master_null_bytes == Field::LAST_NULL_BYTE_UNDEF)      master_null_bytes= 1;  }  DBUG_ASSERT(master_null_bytes <= table->s->null_bytes);  memcpy(record, row, master_null_bytes);            // [1]  int error= 0;  bitmap_set_all(rw_set);  Field **const begin_ptr = table->field;  Field **field_ptr;  uchar const *ptr= row + master_null_bytes;  Field **const end_ptr= begin_ptr + colcnt;  for (field_ptr= begin_ptr ; field_ptr < end_ptr ; ++field_ptr)  {    Field *const f= *field_ptr;    if (bitmap_is_set(cols, field_ptr -  begin_ptr))    {      f->move_field_offset(offset);      ptr= f->unpack(f->ptr, ptr);      f->move_field_offset(-offset);      /* Field...::unpack() cannot return 0 */      DBUG_ASSERT(ptr != NULL);    }    else      bitmap_clear_bit(rw_set, field_ptr - begin_ptr);  }  *row_end = ptr;  if (master_reclength)  {    if (*field_ptr)      *master_reclength = (*field_ptr)->ptr - table->record[0];    else      *master_reclength = table->s->reclength;  }  /*    Set properties for remaining columns, if there are any. We let the    corresponding bit in the write_set be set, to write the value if    it was not there already. We iterate over all remaining columns,    even if there were an error, to get as many error messages as    possible.  We are still able to return a pointer to the next row,    so redo that.    This generation of error messages is only relevant when inserting    new rows.   */  for ( ; *field_ptr ; ++field_ptr)  {    uint32 const mask= NOT_NULL_FLAG | NO_DEFAULT_VALUE_FLAG;    DBUG_PRINT("debug", ("flags = 0x%x, mask = 0x%x, flags & mask = 0x%x",                         (*field_ptr)->flags, mask,                         (*field_ptr)->flags & mask));    if (event_type == WRITE_ROWS_EVENT &&        ((*field_ptr)->flags & mask) == mask)    {      rli->report(ERROR_LEVEL, ER_NO_DEFAULT_FOR_FIELD,                  "Field `%s` of table `%s`.`%s` "                  "has no default value and cannot be NULL",                  (*field_ptr)->field_name, table->s->db.str,                  table->s->table_name.str);      error = ER_NO_DEFAULT_FOR_FIELD;    }    else      (*field_ptr)->set_default();  }//.........这里部分代码省略.........
开发者ID:Abner-Sun,项目名称:linux_mysql5.1_mini_pathChange,代码行数:101,


示例7: main

int main(int argc, char **argv){  char self_name[FN_REFLEN];  MY_INIT(argv[0]);#if __WIN__  if (GetModuleFileName(NULL, self_name, FN_REFLEN) == 0)#endif  {    strncpy(self_name, argv[0], FN_REFLEN);  }  if (init_dynamic_string(&ds_args, "", 512, 256) ||      init_dynamic_string(&conn_args, "", 512, 256))    die("Out of memory");  if (load_defaults("my", load_default_groups, &argc, &argv))    die(NULL);  defaults_argv= argv; /* Must be freed by 'free_defaults' */  if (handle_options(&argc, &argv, my_long_options, get_one_option))    die(NULL);  if (debug_info_flag)    my_end_arg= MY_CHECK_ERROR | MY_GIVE_INFO;  if (debug_check_flag)    my_end_arg= MY_CHECK_ERROR;  if (tty_password)  {    opt_password= get_tty_password(NullS);    /* add password to defaults file */    dynstr_append_os_quoted(&ds_args, "--password=", opt_password, NullS);    dynstr_append(&ds_args, " ");  }  /* add user to defaults file */  dynstr_append_os_quoted(&ds_args, "--user=", opt_user, NullS);  dynstr_append(&ds_args, " ");  /* Find mysql */  find_tool(mysql_path, IF_WIN("mysql.exe", "mysql"), self_name);  /* Find mysqlcheck */  find_tool(mysqlcheck_path, IF_WIN("mysqlcheck.exe", "mysqlcheck"), self_name);  if (opt_systables_only && !opt_silent)    printf("The --upgrade-system-tables option was used, user tables won't be touched./n");  /*    Read the mysql_upgrade_info file to check if mysql_upgrade    already has been run for this installation of MySQL  */  if (!opt_force && upgrade_already_done())  {    printf("This installation of MySQL is already upgraded to %s, "           "use --force if you still need to run mysql_upgrade/n",           MYSQL_SERVER_VERSION);    goto end;  }  if (opt_version_check && check_version_match())    die("Upgrade failed");  upgrade_from_mysql= is_mysql();  /*    Run "mysqlcheck" and "mysql_fix_privilege_tables.sql"  */  if (run_mysqlcheck_upgrade(TRUE) ||      run_mysqlcheck_views() ||      run_sql_fix_privilege_tables() ||      run_mysqlcheck_fixnames() ||      run_mysqlcheck_upgrade(FALSE))    die("Upgrade failed" );  verbose("Phase %d/%d: Running 'FLUSH PRIVILEGES'", ++phase, phases_total);  if (run_query("FLUSH PRIVILEGES", NULL, TRUE))    die("Upgrade failed" );  verbose("OK");  /* Create a file indicating upgrade has been performed */  create_mysql_upgrade_info_file();  DBUG_ASSERT(phase == phases_total);end:  free_used_memory();  my_end(my_end_arg);  exit(0);}
开发者ID:janlindstrom,项目名称:mariadb-10.0,代码行数:92,


示例8: test_lockman

pthread_handler_t test_lockman(void *arg){  int    m= (*(int *)arg);  uint   x, loid, row, table, res, locklevel, timeout= 0;  TABLE_LOCK_OWNER *lo1;  DBUG_ASSERT(Ntables <= Ntbls);  DBUG_ASSERT(Nrows + Ntables <= Ntbls);  pthread_mutex_lock(&rt_mutex);  loid= ++thread_number;  pthread_mutex_unlock(&rt_mutex);  lo1= loid2lo1(loid);  for (x= ((int)(intptr)(&m)); m > 0; m--)  {    /* three prime numbers */    x= (uint) ((x*LL(3628273133) + LL(1500450271)) % LL(9576890767));    row=  x % Nrows + Ntables;    table= row % Ntables;    locklevel= (x/Nrows) & 3;    if (table_lock_ratio && (x/Nrows/4) % table_lock_ratio == 0)    {      /* table lock */      res= tablockman_getlock(&tablockman, lo1, ltarray+table,                              lock_array[locklevel]);      DIAG(("loid %2d, table %d, lock %s, res %s", loid, table,            lock2str[locklevel], res2str[res]));      if (res < GOT_THE_LOCK)      {        reinit_tlo(&tablockman, lo1);        DIAG(("loid %2d, release all locks", loid));        timeout++;        continue;      }      DBUG_ASSERT(res == GOT_THE_LOCK);    }    else    { /* row lock */      locklevel&= 1;      res= tablockman_getlock(&tablockman, lo1, ltarray+table, lock_array[locklevel + 4]);      DIAG(("loid %2d, row %d, lock %s, res %s", loid, row,            lock2str[locklevel+4], res2str[res]));      switch (res)      {      case GOT_THE_LOCK:        continue;      case GOT_THE_LOCK_NEED_TO_INSTANT_LOCK_A_SUBRESOURCE:        /* not implemented, so take a regular lock */      case GOT_THE_LOCK_NEED_TO_LOCK_A_SUBRESOURCE:        res= tablockman_getlock(&tablockman, lo1, ltarray+row, lock_array[locklevel]);        DIAG(("loid %2d, ROW %d, lock %s, res %s", loid, row,              lock2str[locklevel], res2str[res]));        if (res < GOT_THE_LOCK)        {          reinit_tlo(&tablockman, lo1);          DIAG(("loid %2d, release all locks", loid));          timeout++;          continue;        }        DBUG_ASSERT(res == GOT_THE_LOCK);        continue;      default:        reinit_tlo(&tablockman, lo1);        DIAG(("loid %2d, release all locks", loid));        timeout++;        continue;      }    }  }  reinit_tlo(&tablockman, lo1);  pthread_mutex_lock(&rt_mutex);  rt_num_threads--;  timeouts+= timeout;  if (!rt_num_threads)    diag("number of timeouts: %d", timeouts);  pthread_mutex_unlock(&rt_mutex);  return 0;}
开发者ID:AllenWeb,项目名称:mariadb,代码行数:81,


示例9: my_thread_global_init

my_bool my_thread_global_init(void){  int pth_ret;  if (my_thread_global_init_done)    return 0;  my_thread_global_init_done= 1;#ifdef PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP  /*    Set mutex type to "fast" a.k.a "adaptive"    In this case the thread may steal the mutex from some other thread    that is waiting for the same mutex.  This will save us some    context switches but may cause a thread to 'starve forever' while    waiting for the mutex (not likely if the code within the mutex is    short).  */  pthread_mutexattr_init(&my_fast_mutexattr);  pthread_mutexattr_settype(&my_fast_mutexattr,                            PTHREAD_MUTEX_ADAPTIVE_NP);#endif#ifdef PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP  /*    Set mutex type to "errorcheck"  */  pthread_mutexattr_init(&my_errorcheck_mutexattr);  pthread_mutexattr_settype(&my_errorcheck_mutexattr,                            PTHREAD_MUTEX_ERRORCHECK);#endif  DBUG_ASSERT(! THR_KEY_mysys_initialized);  if ((pth_ret= my_create_thread_local_key(&THR_KEY_mysys, NULL)) != 0)  { /* purecov: begin inspected */    my_message_local(ERROR_LEVEL, "Can't initialize threads: error %d",                     pth_ret);    /* purecov: end */    return 1;  }  THR_KEY_mysys_initialized= TRUE;  mysql_mutex_init(key_THR_LOCK_malloc, &THR_LOCK_malloc, MY_MUTEX_INIT_FAST);  mysql_mutex_init(key_THR_LOCK_open, &THR_LOCK_open, MY_MUTEX_INIT_FAST);  mysql_mutex_init(key_THR_LOCK_charset, &THR_LOCK_charset, MY_MUTEX_INIT_FAST);  mysql_mutex_init(key_THR_LOCK_threads, &THR_LOCK_threads, MY_MUTEX_INIT_FAST);  if (my_thread_init())    return 1;  mysql_mutex_init(key_THR_LOCK_lock, &THR_LOCK_lock, MY_MUTEX_INIT_FAST);  mysql_mutex_init(key_THR_LOCK_myisam, &THR_LOCK_myisam, MY_MUTEX_INIT_SLOW);  mysql_mutex_init(key_THR_LOCK_myisam_mmap, &THR_LOCK_myisam_mmap, MY_MUTEX_INIT_FAST);  mysql_mutex_init(key_THR_LOCK_heap, &THR_LOCK_heap, MY_MUTEX_INIT_FAST);  mysql_mutex_init(key_THR_LOCK_net, &THR_LOCK_net, MY_MUTEX_INIT_FAST);  mysql_cond_init(key_THR_COND_threads, &THR_COND_threads);#ifdef _MSC_VER  install_sigabrt_handler();#endif  return 0;}
开发者ID:CSI3304Project,项目名称:CSI3304Project1,代码行数:63,


示例10: thr_lock

//.........这里部分代码省略.........          data->type=TL_UNLOCK;          result= THR_LOCK_ABORTED;               /* Can't wait for this one */          goto end;        }        /* purecov: end */      }      /*        The idea is to allow us to get a lock at once if we already have        a write lock or if there is no pending write locks and if all        write locks are of TL_WRITE_ALLOW_WRITE type.        Note that, since lock requests for the same table are sorted in        such way that requests with higher thr_lock_type value come first        (with one exception (*)), lock being requested usually has        equal or "weaker" type than one which thread might have already        acquired.        *)  The only exception to this rule is case when type of old lock            is TL_WRITE_LOW_PRIORITY and type of new lock is changed inside            of thr_lock() from TL_WRITE_CONCURRENT_INSERT to TL_WRITE since            engine turns out to be not supporting concurrent inserts.            Note that since TL_WRITE has the same compatibility rules as            TL_WRITE_LOW_PRIORITY (their only difference is priority),            it is OK to grant new lock without additional checks in such            situation.        Therefore it is OK to allow acquiring write lock on the table if        this thread already holds some write lock on it.        (INSERT INTO t1 VALUES (f1()), where f1() is stored function which        tries to update t1, is an example of statement which requests two        different types of write lock on the same table).      */      DBUG_ASSERT(! has_old_lock(lock->write.data, data->owner) ||                  ((lock_type <= lock->write.data->type ||                    (lock_type == TL_WRITE &&                     lock->write.data->type == TL_WRITE_LOW_PRIORITY))));      if ((lock_type == TL_WRITE_ALLOW_WRITE &&           ! lock->write_wait.data &&           lock->write.data->type == TL_WRITE_ALLOW_WRITE) ||          has_old_lock(lock->write.data, data->owner))      {	/*          We have already got a write lock or all locks are          TL_WRITE_ALLOW_WRITE        */        DBUG_PRINT("info", ("write_wait.data: 0x%lx  old_type: %d",                            (ulong) lock->write_wait.data,                            lock->write.data->type));	(*lock->write.last)=data;	/* Add to running fifo */	data->prev=lock->write.last;	lock->write.last= &data->next;	check_locks(lock,"second write lock",0);	if (data->lock->get_status)	  (*data->lock->get_status)(data->status_param, 0);	locks_immediate++;	goto end;      }      DBUG_PRINT("lock",("write locked 2 by thread: 0x%x",			 lock->write.data->owner->thread_id));    }    else    {      DBUG_PRINT("info", ("write_wait.data: 0x%lx",
开发者ID:ForcerKing,项目名称:ShaoqunXu-mysql5.7,代码行数:67,


示例11: ftb_query_add_word

static int ftb_query_add_word(MYSQL_FTPARSER_PARAM *param,                              char *word, int word_len,                              MYSQL_FTPARSER_BOOLEAN_INFO *info){  MY_FTB_PARAM *ftb_param= param->mysql_ftparam;  FTB_WORD *ftbw;  FTB_EXPR *ftbe, *tmp_expr;  FT_WORD *phrase_word;  LIST *tmp_element;  int r= info->weight_adjust;  float weight= (float)        (info->wasign ? nwghts : wghts)[(r>5)?5:((r<-5)?-5:r)];  switch (info->type) {    case FT_TOKEN_WORD:      ftbw= (FTB_WORD *)alloc_root(&ftb_param->ftb->mem_root,                                   sizeof(FTB_WORD) +                                   (info->trunc ? MI_MAX_KEY_BUFF :                                    word_len * ftb_param->ftb->charset->mbmaxlen +                                    HA_FT_WLEN +                                    ftb_param->ftb->info->s->rec_reflength));      ftbw->len= word_len + 1;      ftbw->flags= 0;      ftbw->off= 0;      if (info->yesno > 0) ftbw->flags|= FTB_FLAG_YES;      if (info->yesno < 0) ftbw->flags|= FTB_FLAG_NO;      if (info->trunc) ftbw->flags|= FTB_FLAG_TRUNC;      ftbw->weight= weight;      ftbw->up= ftb_param->ftbe;      ftbw->docid[0]= ftbw->docid[1]= HA_OFFSET_ERROR;      ftbw->ndepth= (info->yesno < 0) + ftb_param->depth;      ftbw->key_root= HA_OFFSET_ERROR;      memcpy(ftbw->word + 1, word, word_len);      ftbw->word[0]= word_len;      if (info->yesno > 0) ftbw->up->ythresh++;      ftb_param->ftb->queue.max_elements++;      ftbw->prev= ftb_param->ftb->last_word;      ftb_param->ftb->last_word= ftbw;      ftb_param->ftb->with_scan|= (info->trunc & FTB_FLAG_TRUNC);      for (tmp_expr= ftb_param->ftbe; tmp_expr->up; tmp_expr= tmp_expr->up)        if (! (tmp_expr->flags & FTB_FLAG_YES))          break;      ftbw->max_docid_expr= tmp_expr;      /* fall through */    case FT_TOKEN_STOPWORD:      if (! ftb_param->up_quot) break;      phrase_word= (FT_WORD *)alloc_root(&ftb_param->ftb->mem_root, sizeof(FT_WORD));      tmp_element= (LIST *)alloc_root(&ftb_param->ftb->mem_root, sizeof(LIST));      phrase_word->pos= (uchar*) word;      phrase_word->len= word_len;      tmp_element->data= (void *)phrase_word;      ftb_param->ftbe->phrase= list_add(ftb_param->ftbe->phrase, tmp_element);      /* Allocate document list at this point.         It allows to avoid huge amount of allocs/frees for each row.*/      tmp_element= (LIST *)alloc_root(&ftb_param->ftb->mem_root, sizeof(LIST));      tmp_element->data= alloc_root(&ftb_param->ftb->mem_root, sizeof(FT_WORD));      ftb_param->ftbe->document=        list_add(ftb_param->ftbe->document, tmp_element);      break;    case FT_TOKEN_LEFT_PAREN:      ftbe=(FTB_EXPR *)alloc_root(&ftb_param->ftb->mem_root, sizeof(FTB_EXPR));      ftbe->flags= 0;      if (info->yesno > 0) ftbe->flags|= FTB_FLAG_YES;      if (info->yesno < 0) ftbe->flags|= FTB_FLAG_NO;      ftbe->weight= weight;      ftbe->up= ftb_param->ftbe;      ftbe->max_docid= ftbe->ythresh= ftbe->yweaks= 0;      ftbe->docid[0]= ftbe->docid[1]= HA_OFFSET_ERROR;      ftbe->phrase= NULL;      ftbe->document= 0;      if (info->quot) ftb_param->ftb->with_scan|= 2;      if (info->yesno > 0) ftbe->up->ythresh++;      ftb_param->ftbe= ftbe;      ftb_param->depth++;      ftb_param->up_quot= (uchar*) info->quot;      break;    case FT_TOKEN_RIGHT_PAREN:      if (ftb_param->ftbe->document)      {        /* Circuit document list */        for (tmp_element= ftb_param->ftbe->document;             tmp_element->next; tmp_element= tmp_element->next) /* no-op */;        tmp_element->next= ftb_param->ftbe->document;        ftb_param->ftbe->document->prev= tmp_element;      }      info->quot= 0;      if (ftb_param->ftbe->up)      {        DBUG_ASSERT(ftb_param->depth);        ftb_param->ftbe= ftb_param->ftbe->up;        ftb_param->depth--;        ftb_param->up_quot= 0;      }      break;    case FT_TOKEN_EOF:    default:      break;  }  return(0);}
开发者ID:Coco-wan,项目名称:git-1,代码行数:100,


示例12: my_ssl_set_certs

/*   Set certification stuff.*/static int my_ssl_set_certs(SSL *ssl){  int have_cert= 0;  MYSQL *mysql;  DBUG_ENTER("my_ssl_set_certs");  /* Make sure that ssl was allocated and      ssl_system was initialized */  DBUG_ASSERT(ssl != NULL);  DBUG_ASSERT(my_ssl_initialized == TRUE);  /* get connection for current ssl */  mysql= (MYSQL *)SSL_get_app_data(ssl);  /* add cipher */  if ((mysql->options.ssl_cipher &&         mysql->options.ssl_cipher[0] != 0) &&      SSL_set_cipher_list(ssl, mysql->options.ssl_cipher) == 0)    goto error;  /* set cert */  if (mysql->options.ssl_cert && mysql->options.ssl_cert[0] != 0)    {    if (SSL_CTX_use_certificate_chain_file(SSL_context, mysql->options.ssl_cert) <= 0)      goto error;     have_cert= 1;  }  /* set key */  if (mysql->options.ssl_key && mysql->options.ssl_key[0])  {    if (SSL_CTX_use_PrivateKey_file(SSL_context, mysql->options.ssl_key, SSL_FILETYPE_PEM) <= 0)      goto error;    /* verify key */    if (have_cert && SSL_CTX_check_private_key(SSL_context) != 1)      goto error;  }  /* ca_file and ca_path */  if (SSL_CTX_load_verify_locations(SSL_context,                                     mysql->options.ssl_ca,                                    mysql->options.ssl_capath) == 0)  {    if (mysql->options.ssl_ca || mysql->options.ssl_capath)      goto error;    if (SSL_CTX_set_default_verify_paths(SSL_context) == 0)      goto error;  }  if (mysql->options.extension &&      (mysql->options.extension->ssl_crl || mysql->options.extension->ssl_crlpath))  {    X509_STORE *certstore;    if ((certstore= SSL_CTX_get_cert_store(SSL_context)))    {      if (X509_STORE_load_locations(certstore, mysql->options.ssl_ca,                                     mysql->options.ssl_capath) == 0 ||			    X509_STORE_set_flags(certstore, X509_V_FLAG_CRL_CHECK |                                         X509_V_FLAG_CRL_CHECK_ALL) == 0)        goto error;    }  }  DBUG_RETURN(0);error:  my_SSL_error(mysql);  DBUG_RETURN(1);}
开发者ID:bsmr-mariadb,项目名称:connector-c,代码行数:73,


示例13:

ulonglong TYPBLK<TYPE>::MaxVal(void) {DBUG_ASSERT(false); return 0;}
开发者ID:SunguckLee,项目名称:MariaDB,代码行数:1,


示例14: gzip

/* ===========================================================================  Opens a gzip (.gz) file for reading or writing. The mode parameter  is as in fopen ("rb" or "wb"). The file is given either by file descriptor  or path name (if fd == -1).  az_open returns NULL if the file could not be opened or if there was  insufficient memory to allocate the (de)compression state; errno  can be checked to distinguish the two cases (if errno is zero, the  zlib error is Z_MEM_ERROR).*/int az_open (azio_stream *s, const char *path, int Flags, File fd){  int err;  int level = Z_DEFAULT_COMPRESSION; /* compression level */  int strategy = Z_DEFAULT_STRATEGY; /* compression strategy */  s->stream.zalloc = (alloc_func)0;  s->stream.zfree = (free_func)0;  s->stream.opaque = (voidpf)0;  memset(s->inbuf, 0, AZ_BUFSIZE_READ);  memset(s->outbuf, 0, AZ_BUFSIZE_WRITE);  s->stream.next_in = s->inbuf;  s->stream.next_out = s->outbuf;  s->stream.avail_in = s->stream.avail_out = 0;  s->z_err = Z_OK;  s->z_eof = 0;  s->in = 0;  s->out = 0;  s->back = EOF;  s->crc = crc32(0L, Z_NULL, 0);  s->transparent = 0;  s->mode = 'r';  s->version = (unsigned char)az_magic[1]; /* this needs to be a define to version */  s->minor_version= (unsigned char) az_magic[2]; /* minor version */  s->dirty= AZ_STATE_CLEAN;  /*    We do our own version of append by nature.     We must always have write access to take card of the header.  */  DBUG_ASSERT(Flags | O_APPEND);  DBUG_ASSERT(Flags | O_WRONLY);  if (Flags & O_RDWR)     s->mode = 'w';  if (s->mode == 'w')   {    err = deflateInit2(&(s->stream), level,                       Z_DEFLATED, -MAX_WBITS, 8, strategy);    /* windowBits is passed < 0 to suppress zlib header */    s->stream.next_out = s->outbuf;    if (err != Z_OK)    {      destroy(s);      return Z_NULL;    }  } else {    s->stream.next_in  = s->inbuf;    err = inflateInit2(&(s->stream), -MAX_WBITS);    /* windowBits is passed < 0 to tell that there is no zlib header.     * Note that in this case inflate *requires* an extra "dummy" byte     * after the compressed stream in order to complete decompression and     * return Z_STREAM_END. Here the gzip CRC32 ensures that 4 bytes are     * present after the compressed stream.   */    if (err != Z_OK)    {      destroy(s);      return Z_NULL;    }  }  s->stream.avail_out = AZ_BUFSIZE_WRITE;  errno = 0;  s->file = fd < 0 ? my_open(path, Flags, MYF(0)) : fd;  if (s->file < 0 )   {    destroy(s);    return Z_NULL;  }  if (Flags & O_CREAT || Flags & O_TRUNC)   {    s->rows= 0;    s->forced_flushes= 0;    s->shortest_row= 0;    s->longest_row= 0;    s->auto_increment= 0;    s->check_point= 0;    s->comment_start_pos= 0;    s->comment_length= 0;    s->frm_start_pos= 0;    s->frm_length= 0;    s->dirty= 1; /* We create the file dirty */    s->start = AZHEADER_SIZE + AZMETA_BUFFER_SIZE;    write_header(s);    my_seek(s->file, 0, MY_SEEK_END, MYF(0));//.........这里部分代码省略.........
开发者ID:Ihon,项目名称:mysql-5.5-debian,代码行数:101,


示例15: init

 void init(void) {   CHARSET_INFO **cs;   MRN_DBUG_ENTER_FUNCTION();   for (cs = all_charsets; cs < all_charsets + MY_ALL_CHARSETS_SIZE; cs++)   {     if (!cs[0])       continue;     if (!strcmp(cs[0]->csname, "utf8"))     {       DBUG_PRINT("info", ("mroonga: %s is %s [%p]",                           cs[0]->name, cs[0]->csname, cs[0]->cset));       if (!mrn_charset_utf8)         mrn_charset_utf8 = cs[0];       else if (mrn_charset_utf8->cset != cs[0]->cset)         DBUG_ASSERT(0);       continue;     }     if (!strcmp(cs[0]->csname, "utf8mb4"))     {       DBUG_PRINT("info", ("mroonga: %s is %s [%p]",                           cs[0]->name, cs[0]->csname, cs[0]->cset));       if (!mrn_charset_utf8mb4)         mrn_charset_utf8mb4 = cs[0];       else if (mrn_charset_utf8mb4->cset != cs[0]->cset)         DBUG_ASSERT(0);       continue;     }     if (!strcmp(cs[0]->csname, "binary"))     {       DBUG_PRINT("info", ("mroonga: %s is %s [%p]",                           cs[0]->name, cs[0]->csname, cs[0]->cset));       if (!mrn_charset_binary)         mrn_charset_binary = cs[0];       else if (mrn_charset_binary->cset != cs[0]->cset)         DBUG_ASSERT(0);       continue;     }     if (!strcmp(cs[0]->csname, "ascii"))     {       DBUG_PRINT("info", ("mroonga: %s is %s [%p]",                           cs[0]->name, cs[0]->csname, cs[0]->cset));       if (!mrn_charset_ascii)         mrn_charset_ascii = cs[0];       else if (mrn_charset_ascii->cset != cs[0]->cset)         DBUG_ASSERT(0);       continue;     }     if (!strcmp(cs[0]->csname, "latin1"))     {       DBUG_PRINT("info", ("mroonga: %s is %s [%p]",                           cs[0]->name, cs[0]->csname, cs[0]->cset));       if (!mrn_charset_latin1_1)         mrn_charset_latin1_1 = cs[0];       else if (mrn_charset_latin1_1->cset != cs[0]->cset)       {         if (!mrn_charset_latin1_2)           mrn_charset_latin1_2 = cs[0];         else if (mrn_charset_latin1_2->cset != cs[0]->cset)           DBUG_ASSERT(0);       }       continue;     }     if (!strcmp(cs[0]->csname, "cp932"))     {       DBUG_PRINT("info", ("mroonga: %s is %s [%p]",                           cs[0]->name, cs[0]->csname, cs[0]->cset));       if (!mrn_charset_cp932)         mrn_charset_cp932 = cs[0];       else if (mrn_charset_cp932->cset != cs[0]->cset)         DBUG_ASSERT(0);       continue;     }     if (!strcmp(cs[0]->csname, "sjis"))     {       DBUG_PRINT("info", ("mroonga: %s is %s [%p]",                           cs[0]->name, cs[0]->csname, cs[0]->cset));       if (!mrn_charset_sjis)         mrn_charset_sjis = cs[0];       else if (mrn_charset_sjis->cset != cs[0]->cset)         DBUG_ASSERT(0);       continue;     }     if (!strcmp(cs[0]->csname, "eucjpms"))     {       DBUG_PRINT("info", ("mroonga: %s is %s [%p]",                           cs[0]->name, cs[0]->csname, cs[0]->cset));       if (!mrn_charset_eucjpms)         mrn_charset_eucjpms = cs[0];       else if (mrn_charset_eucjpms->cset != cs[0]->cset)         DBUG_ASSERT(0);       continue;     }     if (!strcmp(cs[0]->csname, "ujis"))     {       DBUG_PRINT("info", ("mroonga: %s is %s [%p]",                           cs[0]->name, cs[0]->csname, cs[0]->cset));       if (!mrn_charset_ujis)         mrn_charset_ujis = cs[0];       else if (mrn_charset_ujis->cset != cs[0]->cset)         DBUG_ASSERT(0);//.........这里部分代码省略.........
开发者ID:mmmaru777,项目名称:mroonga,代码行数:101,


示例16: hp_rb_make_key

uint hp_rb_make_key(HP_KEYDEF *keydef, uchar *key, 		    const uchar *rec, uchar *recpos){  uchar *start_key= key;  HA_KEYSEG *seg, *endseg;  for (seg= keydef->seg, endseg= seg + keydef->keysegs; seg < endseg; seg++)  {    uint char_length;    if (seg->null_bit)    {      if (!(*key++= 1 - MY_TEST(rec[seg->null_pos] & seg->null_bit)))        continue;    }    if (seg->flag & HA_SWAP_KEY)    {      uint length= seg->length;      uchar *pos= (uchar*) rec + seg->start;      DBUG_ASSERT(seg->type != HA_KEYTYPE_BIT);#ifdef HAVE_ISNAN      if (seg->type == HA_KEYTYPE_FLOAT)      {	float nr;	float4get(nr, pos);	if (isnan(nr))	{	  /* Replace NAN with zero */ 	  bzero(key, length);	  key+= length;	  continue;	}      }      else if (seg->type == HA_KEYTYPE_DOUBLE)      {	double nr;	float8get(nr, pos);	if (isnan(nr))	{ 	  bzero(key, length);	  key+= length;	  continue;	}      }#endif      pos+= length;      while (length--)      {	*key++= *--pos;      }      continue;    }    if (seg->flag & HA_VAR_LENGTH_PART)    {      uchar *pos=      (uchar*) rec + seg->start;      uint length=     seg->length;      uint pack_length= seg->bit_start;      uint tmp_length= (pack_length == 1 ? (uint) *(uchar*) pos :                        uint2korr(pos));      CHARSET_INFO *cs= seg->charset;      char_length= length/cs->mbmaxlen;      pos+= pack_length;			/* Skip VARCHAR length */      set_if_smaller(length,tmp_length);      FIX_LENGTH(cs, pos, length, char_length);      store_key_length_inc(key,char_length);      memcpy((uchar*) key,(uchar*) pos,(size_t) char_length);      key+= char_length;      continue;    }    char_length= seg->length;    if (seg->charset->mbmaxlen > 1)    {      char_length= my_charpos(seg->charset,                               rec + seg->start, rec + seg->start + char_length,                              char_length / seg->charset->mbmaxlen);      set_if_smaller(char_length, seg->length); /* QQ: ok to remove? */      if (char_length < seg->length)        seg->charset->cset->fill(seg->charset, (char*) key + char_length,                                 seg->length - char_length, ' ');    }    if (seg->type == HA_KEYTYPE_BIT && seg->bit_length)    {      *key++= get_rec_bits(rec + seg->bit_pos,                           seg->bit_start, seg->bit_length);      char_length--;    }    memcpy(key, rec + seg->start, (size_t) char_length);    key+= seg->length;  }  memcpy(key, &recpos, sizeof(uchar*));  return (uint) (key - start_key);}
开发者ID:Belxjander,项目名称:Asuna,代码行数:95,


示例17: sslGetErrString

const char*sslGetErrString(enum enum_ssl_init_error e){  DBUG_ASSERT(SSL_INITERR_NOERROR < e && e < SSL_INITERR_LASTERR);  return ssl_error_string[e];}
开发者ID:oscar810429,项目名称:AliSQL,代码行数:6,


示例18: UNINIT_VAR

MYRG_INFO *myrg_open(const char *name, int mode, int handle_locking){  int save_errno,errpos=0;  uint files= 0, i, dir_length, length, UNINIT_VAR(key_parts), min_keys= 0;  ulonglong file_offset=0;  char name_buff[FN_REFLEN*2],buff[FN_REFLEN],*end;  MYRG_INFO *m_info=0;  File fd;  IO_CACHE file;  MI_INFO *isam=0;  uint found_merge_insert_method= 0;  size_t name_buff_length;  my_bool bad_children= FALSE;  DBUG_ENTER("myrg_open");  memset(&file, 0, sizeof(file));  if ((fd= mysql_file_open(rg_key_file_MRG,                           fn_format(name_buff, name, "", MYRG_NAME_EXT,                                     MY_UNPACK_FILENAME|MY_APPEND_EXT),                           O_RDONLY | O_SHARE, MYF(0))) < 0)    goto err;  errpos=1;  if (init_io_cache(&file, fd, 4*IO_SIZE, READ_CACHE, 0, 0,		    MYF(MY_WME | MY_NABP)))    goto err;  errpos=2;  dir_length=dirname_part(name_buff, name, &name_buff_length);  while ((length=my_b_gets(&file,buff,FN_REFLEN-1)))  {    if ((end=buff+length)[-1] == '/n')      end[-1]='/0';    if (buff[0] && buff[0] != '#')      files++;  }  my_b_seek(&file, 0);  while ((length=my_b_gets(&file,buff,FN_REFLEN-1)))  {    if ((end=buff+length)[-1] == '/n')      *--end='/0';    if (!buff[0])      continue;		/* Skip empty lines */    if (buff[0] == '#')    {      if (!strncmp(buff+1,"INSERT_METHOD=",14))      {			/* Lookup insert method */	int tmp= find_type(buff + 15, &merge_insert_method, FIND_TYPE_BASIC);	found_merge_insert_method = (uint) (tmp >= 0 ? tmp : 0);      }      continue;		/* Skip comments */    }    if (!has_path(buff))    {      (void) strmake(name_buff+dir_length,buff,                   sizeof(name_buff)-1-dir_length);      (void) cleanup_dirname(buff,name_buff);    }    else      fn_format(buff, buff, "", "", 0);    if (!(isam=mi_open(buff,mode,(handle_locking?HA_OPEN_WAIT_IF_LOCKED:0))))    {      if (handle_locking & HA_OPEN_FOR_REPAIR)      {        myrg_print_wrong_table(buff);        bad_children= TRUE;        continue;      }      goto bad_children;    }    if (!m_info)                                /* First file */    {      key_parts=isam->s->base.key_parts;      if (!(m_info= (MYRG_INFO*) my_malloc(sizeof(MYRG_INFO) +                                           files*sizeof(MYRG_TABLE) +                                           key_parts*sizeof(long),                                           MYF(MY_WME|MY_ZEROFILL))))        goto err;      DBUG_ASSERT(files);      m_info->open_tables=(MYRG_TABLE *) (m_info+1);      m_info->rec_per_key_part=(ulong *) (m_info->open_tables+files);      m_info->tables= files;      files= 0;      m_info->reclength=isam->s->base.reclength;      min_keys= isam->s->base.keys;      errpos=3;    }    m_info->open_tables[files].table= isam;    m_info->open_tables[files].file_offset=(my_off_t) file_offset;    file_offset+=isam->state->data_file_length;    files++;    if (m_info->reclength != isam->s->base.reclength)    {      if (handle_locking & HA_OPEN_FOR_REPAIR)      {        myrg_print_wrong_table(buff);        bad_children= TRUE;        continue;      }      goto bad_children;//.........这里部分代码省略.........
开发者ID:hobbytp,项目名称:percona-xtrabackup,代码行数:101,


示例19: set_args_separator

inline static void set_args_separator(char** arg){  DBUG_ASSERT(my_getopt_use_args_separator);  *arg= (char*)args_separator;}
开发者ID:ashang,项目名称:google-mysql,代码行数:5,


示例20: my_b_vprintf

size_t my_b_vprintf(IO_CACHE *info, const char* fmt, va_list args){  size_t out_length= 0;  uint minimum_width; /* as yet unimplemented */  uint minimum_width_sign;  uint precision; /* as yet unimplemented for anything but %b */  my_bool is_zero_padded;  /*    Store the location of the beginning of a format directive, for the    case where we learn we shouldn't have been parsing a format string    at all, and we don't want to lose the flag/precision/width/size    information.   */  const char* backtrack;  for (; *fmt != '/0'; fmt++)  {    /* Copy everything until '%' or end of string */    const char *start=fmt;    size_t length;        for (; (*fmt != '/0') && (*fmt != '%'); fmt++) ;    length= (size_t) (fmt - start);    out_length+=length;    if (my_b_write(info, (const uchar*) start, length))      goto err;    if (*fmt == '/0')				/* End of format */      return out_length;    /*       By this point, *fmt must be a percent;  Keep track of this location and      skip over the percent character.     */    DBUG_ASSERT(*fmt == '%');    backtrack= fmt;    fmt++;    is_zero_padded= FALSE;    minimum_width_sign= 1;    minimum_width= 0;    precision= 0;    /* Skip if max size is used (to be compatible with printf) */process_flags:    switch (*fmt)    {      case '-':         minimum_width_sign= -1; fmt++; goto process_flags;      case '0':        is_zero_padded= TRUE; fmt++; goto process_flags;      case '#':        /** @todo Implement "#" conversion flag. */  fmt++; goto process_flags;      case ' ':        /** @todo Implement " " conversion flag. */  fmt++; goto process_flags;      case '+':        /** @todo Implement "+" conversion flag. */  fmt++; goto process_flags;    }    if (*fmt == '*')    {      precision= (int) va_arg(args, int);      fmt++;    }    else    {      while (my_isdigit(&my_charset_latin1, *fmt)) {
开发者ID:1024wow,项目名称:TrinityCore,代码行数:69,


示例21: fn_format

char * fn_format(char * to, const char *name, const char *dir,		    const char *extension, uint flag){  char dev[FN_REFLEN], buff[FN_REFLEN], *pos, *startpos;  const char *ext;  reg1 size_t length;  size_t dev_length;  my_bool not_used;  DBUG_ENTER("fn_format");  DBUG_ASSERT(name != NULL);  DBUG_ASSERT(extension != NULL);  DBUG_PRINT("enter",("name: %s  dir: %s  extension: %s  flag: %d",		       name,dir,extension,flag));  /* Copy and skip directory */  name+=(length=dirname_part(dev, (startpos=(char *) name), &dev_length));  if (length == 0 || (flag & MY_REPLACE_DIR))  {    DBUG_ASSERT(dir != NULL);    /* Use given directory */    convert_dirname(dev,dir,NullS);		/* Fix to this OS */  }  else if ((flag & MY_RELATIVE_PATH) && !test_if_hard_path(dev))  {    DBUG_ASSERT(dir != NULL);    /* Put 'dir' before the given path */    strmake(buff,dev,sizeof(buff)-1);    pos=convert_dirname(dev,dir,NullS);    strmake(pos,buff,sizeof(buff)-1- (int) (pos-dev));  }  if (flag & MY_PACK_FILENAME)    pack_dirname(dev,dev);			/* Put in ./.. and ~/.. */  if (flag & MY_UNPACK_FILENAME)    (void) unpack_dirname(dev, dev, &not_used);	/* Replace ~/.. with dir */  if (!(flag & MY_APPEND_EXT) &&      (pos= (char*) strchr(name,FN_EXTCHAR)) != NullS)  {    if ((flag & MY_REPLACE_EXT) == 0)		/* If we should keep old ext */    {      length=strlength(name);			/* Use old extension */      ext = "";    }    else    {      length= (size_t) (pos-(char*) name);	/* Change extension */      ext= extension;    }  }  else  {    length=strlength(name);			/* No ext, use the now one */    ext=extension;  }  if (strlen(dev)+length+strlen(ext) >= FN_REFLEN || length >= FN_LEN )  {    /* To long path, return original or NULL */    size_t tmp_length;    if (flag & MY_SAFE_PATH)      DBUG_RETURN(NullS);    tmp_length= strlength(startpos);    DBUG_PRINT("error",("dev: '%s'  ext: '%s'  length: %u",dev,ext,                        (uint) length));    (void) strmake(to, startpos, MY_MIN(tmp_length, FN_REFLEN-1));  }  else  {    if (to == startpos)    {      bmove(buff,(uchar*) name,length);		/* Save name for last copy */      name=buff;    }    pos=strmake(strmov(to,dev),name,length);    (void) strmov(pos,ext);			/* Don't convert extension */  }  /*    If MY_RETURN_REAL_PATH and MY_RESOLVE_SYMLINK is given, only do    realpath if the file is a symbolic link  */  if (flag & MY_RETURN_REAL_PATH)    (void) my_realpath(to, to, MYF(flag & MY_RESOLVE_SYMLINKS ?				   MY_RESOLVE_LINK: 0));  else if (flag & MY_RESOLVE_SYMLINKS)  {    strmov(buff,to);    (void) my_readlink(to, buff, MYF(0));  }  DBUG_RETURN(to);} /* fn_format */
开发者ID:Aisun,项目名称:SQLAdvisor,代码行数:91,


示例22: sp_make_key

uint sp_make_key(register MI_INFO *info, uint keynr, uchar *key,		 const uchar *record, my_off_t filepos){  HA_KEYSEG *keyseg;  MI_KEYDEF *keyinfo = &info->s->keyinfo[keynr];  uint len = 0;  uchar *pos;  uint dlen;  uchar *dptr;  double mbr[SPDIMS * 2];  uint i;    keyseg = &keyinfo->seg[-1];  pos = (uchar*)record + keyseg->start;    dlen = _mi_calc_blob_length(keyseg->bit_start, pos);  memcpy(&dptr, pos + keyseg->bit_start, sizeof(char*));  if (!dptr)  {    my_errno= HA_ERR_NULL_IN_SPATIAL;    return 0;  }  sp_mbr_from_wkb(dptr + 4, dlen - 4, SPDIMS, mbr);	/* SRID */    for (i = 0, keyseg = keyinfo->seg; keyseg->type; keyseg++, i++)  {    uint length = keyseg->length, start= keyseg->start;    double val;    DBUG_ASSERT(length == sizeof(double));    DBUG_ASSERT(!(start % sizeof(double)));    DBUG_ASSERT(start < sizeof(mbr));    DBUG_ASSERT(keyseg->type == HA_KEYTYPE_DOUBLE);        val= mbr[start / sizeof (double)];#ifdef HAVE_ISNAN    if (isnan(val))    {      bzero(key, length);      key+= length;      len+= length;      continue;    }#endif    if (keyseg->flag & HA_SWAP_KEY)    {      uchar buf[sizeof(double)];      float8store(buf, val);      pos= &buf[length];      while (pos > buf)        *key++ = *--pos;    }    else    {      float8store((uchar *)key, val);      key += length;    }    len+= length;  }  _mi_dpointer(info, key, filepos);  return len;}
开发者ID:Ihon,项目名称:mysql-5.5-debian,代码行数:64,


示例23: gzip

/* ===========================================================================  Opens a gzip (.gz) file for reading or writing. The mode parameter  is as in fopen ("rb" or "wb"). The file is given either by file descriptor  or path name (if fd == -1).  az_open returns NULL if the file could not be opened or if there was  insufficient memory to allocate the (de)compression state; errno  can be checked to distinguish the two cases (if errno is zero, the  zlib error is Z_MEM_ERROR).*/int az_open (azio_stream *s, const char *path, int Flags, File fd){  int err;  int level = Z_DEFAULT_COMPRESSION; /* compression level */  int strategy = Z_DEFAULT_STRATEGY; /* compression strategy */  memset(s, 0, sizeof(azio_stream));  s->stream.next_in = s->inbuf;  s->stream.next_out = s->outbuf;  DBUG_ASSERT(s->z_err == Z_OK);  s->back = EOF;  s->crc = crc32(0L, Z_NULL, 0);  s->mode = 'r';  /* this needs to be a define to version */  s->version = (unsigned char)az_magic[1];  s->minor_version= (unsigned char) az_magic[2]; /* minor version */  DBUG_ASSERT(s->dirty == AZ_STATE_CLEAN);  /*    We do our own version of append by nature.    We must always have write access to take card of the header.  */  DBUG_ASSERT(Flags | O_APPEND);  DBUG_ASSERT(Flags | O_WRONLY);  if (Flags & O_RDWR)     s->mode = 'w';  if (s->mode == 'w')   {    err = deflateInit2(&(s->stream), level,                       Z_DEFLATED, -MAX_WBITS, 8, strategy);    /* windowBits is passed < 0 to suppress zlib header */    s->stream.next_out = s->outbuf;    if (err != Z_OK)    {      destroy(s);      return Z_NULL;    }  } else {    s->stream.next_in  = s->inbuf;    err = inflateInit2(&(s->stream), -MAX_WBITS);    /* windowBits is passed < 0 to tell that there is no zlib header.     * Note that in this case inflate *requires* an extra "dummy" byte     * after the compressed stream in order to complete decompression and     * return Z_STREAM_END. Here the gzip CRC32 ensures that 4 bytes are     * present after the compressed stream.   */    if (err != Z_OK)    {      destroy(s);      return Z_NULL;    }  }  s->stream.avail_out = AZ_BUFSIZE_WRITE;  errno = 0;  s->file = fd < 0 ? mysql_file_open(arch_key_file_data, path, Flags, MYF(0)) : fd;  DBUG_EXECUTE_IF("simulate_archive_open_failure",  {    if (s->file >= 0)    {      my_close(s->file, MYF(0));      s->file= -1;      my_errno= EMFILE;    }  });
开发者ID:CSI3304Project,项目名称:CSI3304Project1,代码行数:78,


示例24: get_length

static char *process_args(const CHARSET_INFO *cs, char *to, char *end,                          const char* fmt, size_t arg_index, va_list ap){  ARGS_INFO args_arr[MAX_ARGS];  PRINT_INFO print_arr[MAX_PRINT_INFO];  uint idx= 0, arg_count= arg_index;start:  /* Here we are at the beginning of positional argument, right after $ */  arg_index--;  print_arr[idx].flags= 0;  if (*fmt == '`')  {    print_arr[idx].flags|= ESCAPED_ARG;    fmt++;  }  if (*fmt == '-')    fmt++;  print_arr[idx].length= print_arr[idx].width= 0;  /* Get print length */  if (*fmt == '*')  {              fmt++;    fmt= get_length(fmt, &print_arr[idx].length, &print_arr[idx].flags);    print_arr[idx].length--;        DBUG_ASSERT(*fmt == '$' && print_arr[idx].length < MAX_ARGS);    args_arr[print_arr[idx].length].arg_type= 'd';    args_arr[print_arr[idx].length].have_longlong= 0;    print_arr[idx].flags|= LENGTH_ARG;    arg_count= MY_MAX(arg_count, print_arr[idx].length + 1);    fmt++;  }  else    fmt= get_length(fmt, &print_arr[idx].length, &print_arr[idx].flags);    if (*fmt == '.')  {    fmt++;    /* Get print width */    if (*fmt == '*')    {      fmt++;      fmt= get_width(fmt, &print_arr[idx].width);      print_arr[idx].width--;      DBUG_ASSERT(*fmt == '$' && print_arr[idx].width < MAX_ARGS);      args_arr[print_arr[idx].width].arg_type= 'd';      args_arr[print_arr[idx].width].have_longlong= 0;      print_arr[idx].flags|= WIDTH_ARG;      arg_count= MY_MAX(arg_count, print_arr[idx].width + 1);      fmt++;    }    else      fmt= get_width(fmt, &print_arr[idx].width);  }  else    print_arr[idx].width= SIZE_T_MAX;  fmt= check_longlong(fmt, &args_arr[arg_index].have_longlong);  if (*fmt == 'p')    args_arr[arg_index].have_longlong= (sizeof(void *) == sizeof(longlong));  args_arr[arg_index].arg_type= print_arr[idx].arg_type= *fmt;    print_arr[idx].arg_idx= arg_index;  print_arr[idx].begin= ++fmt;  while (*fmt && *fmt != '%')    fmt++;  if (!*fmt)                                  /* End of format string */  {    uint i;    print_arr[idx].end= fmt;    /* Obtain parameters from the list */    for (i= 0 ; i < arg_count; i++)    {      switch (args_arr[i].arg_type) {      case 's':      case 'b':        args_arr[i].str_arg= va_arg(ap, char *);        break;      case 'f':      case 'g':        args_arr[i].double_arg= va_arg(ap, double);        break;      case 'd':      case 'i':      case 'u':      case 'x':      case 'X':      case 'o':      case 'p':        if (args_arr[i].have_longlong)          args_arr[i].longlong_arg= va_arg(ap,longlong);        else if (args_arr[i].arg_type == 'd' || args_arr[i].arg_type == 'i')          args_arr[i].longlong_arg= va_arg(ap, int);        else          args_arr[i].longlong_arg= va_arg(ap, uint);        break;      case 'c':        args_arr[i].longlong_arg= va_arg(ap, int);//.........这里部分代码省略.........
开发者ID:JohnOhl,项目名称:mysql-connector-c,代码行数:101,


示例25: add_compiled_collation

void add_compiled_collation(CHARSET_INFO *cs){  DBUG_ASSERT(cs->number < array_elements(all_charsets));  all_charsets[cs->number]= cs;  cs->state|= MY_CS_AVAILABLE;}
开发者ID:55887MX,项目名称:CCORE,代码行数:6,


示例26: mi_create

//.........这里部分代码省略.........	switch (keyseg->type) {	case HA_KEYTYPE_SHORT_INT:	case HA_KEYTYPE_LONG_INT:	case HA_KEYTYPE_FLOAT:	case HA_KEYTYPE_DOUBLE:	case HA_KEYTYPE_USHORT_INT:	case HA_KEYTYPE_ULONG_INT:	case HA_KEYTYPE_LONGLONG:	case HA_KEYTYPE_ULONGLONG:	case HA_KEYTYPE_INT24:	case HA_KEYTYPE_UINT24:	case HA_KEYTYPE_INT8:	  keyseg->flag|= HA_SWAP_KEY;          break;        case HA_KEYTYPE_VARTEXT1:        case HA_KEYTYPE_VARTEXT2:        case HA_KEYTYPE_VARBINARY1:        case HA_KEYTYPE_VARBINARY2:          if (!(keyseg->flag & HA_BLOB_PART))          {            /* Make a flag that this is a VARCHAR */            keyseg->flag|= HA_VAR_LENGTH_PART;            /* Store in bit_start number of bytes used to pack the length */            keyseg->bit_start= ((keyseg->type == HA_KEYTYPE_VARTEXT1 ||                                 keyseg->type == HA_KEYTYPE_VARBINARY1) ?                                1 : 2);          }          break;	default:	  break;	}	if (keyseg->flag & HA_SPACE_PACK)	{          DBUG_ASSERT(!(keyseg->flag & HA_VAR_LENGTH_PART));	  keydef->flag |= HA_SPACE_PACK_USED | HA_VAR_LENGTH_KEY;	  options|=HA_OPTION_PACK_KEYS;		/* Using packed keys */	  length++;				/* At least one length byte */	  min_key_length_skip+=keyseg->length;	  if (keyseg->length >= 255)	  {					/* prefix may be 3 bytes */	    min_key_length_skip+=2;	    length+=2;	  }	}	if (keyseg->flag & (HA_VAR_LENGTH_PART | HA_BLOB_PART))	{          DBUG_ASSERT(!test_all_bits(keyseg->flag,                                    (HA_VAR_LENGTH_PART | HA_BLOB_PART)));	  keydef->flag|=HA_VAR_LENGTH_KEY;	  length++;				/* At least one length byte */	  options|=HA_OPTION_PACK_KEYS;		/* Using packed keys */	  min_key_length_skip+=keyseg->length;	  if (keyseg->length >= 255)	  {					/* prefix may be 3 bytes */	    min_key_length_skip+=2;	    length+=2;	  }	}	key_length+= keyseg->length;	if (keyseg->null_bit)	{	  key_length++;	  options|=HA_OPTION_PACK_KEYS;	  keyseg->flag|=HA_NULL_PART;	  keydef->flag|=HA_VAR_LENGTH_KEY | HA_NULL_PART_KEY;	}
开发者ID:bobzhen,项目名称:MySQL-Research,代码行数:67,


示例27: maria_extra

//.........这里部分代码省略.........    }    if (maria_is_any_key_active(share->state.key_map))    {      MARIA_KEYDEF *key= share->keyinfo;      uint i;      for (i =0 ; i < share->base.keys ; i++,key++)      {        if (!(key->flag & HA_NOSAME) && info->s->base.auto_key != i+1)        {          maria_clear_key_active(share->state.key_map, i);          info->update|= HA_STATE_CHANGED;        }      }      if (!share->changed)      {	share->changed= 1;			/* Update on close */	share->state.changed|= STATE_CHANGED | STATE_NOT_ANALYZED;	if (!share->global_changed)	{	  share->global_changed= 1;	  share->state.open_count++;	}      }      if (!share->now_transactional)        share->state.state= *info->state;      /*        That state write to disk must be done, even for transactional tables;        indeed the table's share is going to be lost (there was a        HA_EXTRA_FORCE_REOPEN before, which set share->last_version to        0), and so the only way it leaves information (share->state.key_map)        for the posterity is by writing it to disk.      */      DBUG_ASSERT(!maria_in_recovery);      error= _ma_state_info_write(share,                                  MA_STATE_INFO_WRITE_DONT_MOVE_OFFSET |                                  MA_STATE_INFO_WRITE_FULL_INFO);    }    mysql_mutex_unlock(&share->intern_lock);    break;  case HA_EXTRA_FORCE_REOPEN:    /*      MySQL uses this case after it has closed all other instances      of this table.      We however do a flush here for additional safety.    */    /** @todo consider porting these flush-es to MyISAM */    DBUG_ASSERT(share->reopen == 1);    error= _ma_flush_table_files(info, MARIA_FLUSH_DATA | MARIA_FLUSH_INDEX,                                 FLUSH_FORCE_WRITE, FLUSH_FORCE_WRITE);    if (!error && share->changed)    {      mysql_mutex_lock(&share->intern_lock);      error= _ma_state_info_write(share,                                  MA_STATE_INFO_WRITE_DONT_MOVE_OFFSET|                                  MA_STATE_INFO_WRITE_FULL_INFO);      mysql_mutex_unlock(&share->intern_lock);    }    mysql_mutex_lock(&THR_LOCK_maria);    mysql_mutex_lock(&share->intern_lock); /* protect against Checkpoint */    /* Safety against assert in checkpoint */    share->bitmap.changed_not_flushed= 0;    /* this makes the share not be re-used next time the table is opened */    share->last_version= 0L;			/* Impossible version */    mysql_mutex_unlock(&share->intern_lock);    mysql_mutex_unlock(&THR_LOCK_maria);
开发者ID:SunguckLee,项目名称:MariaDB-PageCompression,代码行数:67,


示例28: my_copy

int my_copy(const char *from, const char *to, myf MyFlags){  size_t Count;  my_bool new_file_stat= 0; /* 1 if we could stat "to" */  int create_flag;  File from_file,to_file;  uchar buff[IO_SIZE];  MY_STAT stat_buff,new_stat_buff;  gid_t gid;  DBUG_ENTER("my_copy");  DBUG_PRINT("my",("from %s to %s MyFlags %d", from, to, MyFlags));  from_file=to_file= -1;  DBUG_ASSERT(!(MyFlags & (MY_FNABP | MY_NABP))); /* for my_read/my_write */  if (MyFlags & MY_HOLD_ORIGINAL_MODES)		/* Copy stat if possible */    new_file_stat= test(my_stat((char*) to, &new_stat_buff, MYF(0)));  if ((from_file=my_open(from,O_RDONLY | O_SHARE,MyFlags)) >= 0)  {    if (!my_stat(from, &stat_buff, MyFlags))    {      my_errno=errno;      goto err;    }    if (MyFlags & MY_HOLD_ORIGINAL_MODES && new_file_stat)      stat_buff=new_stat_buff;    create_flag= (MyFlags & MY_DONT_OVERWRITE_FILE) ? O_EXCL : O_TRUNC;    if ((to_file=  my_create(to,(int) stat_buff.st_mode,			     O_WRONLY | create_flag | O_BINARY | O_SHARE,			     MyFlags)) < 0)      goto err;    while ((Count=my_read(from_file, buff, sizeof(buff), MyFlags)) != 0)    {	if (Count == (uint) -1 ||	    my_write(to_file,buff,Count,MYF(MyFlags | MY_NABP)))	goto err;    }    /* sync the destination file */    if (MyFlags & MY_SYNC)    {      if (my_sync(to_file, MyFlags))        goto err;    }    if (my_close(from_file,MyFlags) | my_close(to_file,MyFlags))      DBUG_RETURN(-1);				/* Error on close */    /* Copy modes if possible */    if (MyFlags & MY_HOLD_ORIGINAL_MODES && !new_file_stat)	DBUG_RETURN(0);			/* File copyed but not stat */#if !defined(__WIN__) && !defined(__NETWARE__)    /* Refresh the new_stat_buff */    if (!my_stat((char*) to, &new_stat_buff, MYF(0)))    {      my_errno= errno;      goto err;    }    /* Copy modes */    if ((stat_buff.st_mode & 07777) != (new_stat_buff.st_mode & 07777) &&        chmod(to, stat_buff.st_mode & 07777))    {      my_errno= errno;      if (MyFlags & (MY_FAE+MY_WME))        my_error(EE_CHANGE_PERMISSIONS, MYF(ME_BELL+ME_WAITTANG), from, errno);      goto err;    }    /* Copy ownership */    if (stat_buff.st_gid == new_stat_buff.st_gid)      gid= -1;    else      gid= stat_buff.st_gid;    if ((gid != (gid_t) -1 || stat_buff.st_uid != new_stat_buff.st_uid) &&        chown(to, stat_buff.st_uid, gid))    {      my_errno= errno;      if (MyFlags & (MY_FAE+MY_WME))        my_error(EE_CHANGE_OWNERSHIP, MYF(ME_BELL+ME_WAITTANG), from, errno);      goto err;    }#endif#if !defined(VMS) && !defined(__ZTC__)    if (MyFlags & MY_COPYTIME)    {      struct utimbuf timep;      timep.actime  = stat_buff.st_atime;      timep.modtime = stat_buff.st_mtime;      VOID(utime((char*) to, &timep)); /* last accessed and modified times */    }#endif    DBUG_RETURN(0);  }err://.........这里部分代码省略.........
开发者ID:ngaut,项目名称:mysql,代码行数:101,



注:本文中的DBUG_ASSERT函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ DBUG_ENTER函数代码示例
C++ DBTzero函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。