ha_innobase::general_fetch

 

复制代码
/***********************************************************************//**
Reads the next or previous row from a cursor, which must have previously been
positioned using index_read.
@return    0, HA_ERR_END_OF_FILE, or error number */
UNIV_INTERN
int
ha_innobase::general_fetch(
/*=======================*/
    uchar*    buf,        /*!< in/out: buffer for next row in MySQL
                format */
    uint    direction,    /*!< in: ROW_SEL_NEXT or ROW_SEL_PREV */
    uint    match_mode)    /*!< in: 0, ROW_SEL_EXACT, or
                ROW_SEL_EXACT_PREFIX */
{
    ulint        ret;
    int        error    = 0;

    DBUG_ENTER("general_fetch");

    ut_a(prebuilt->trx == thd_to_trx(user_thd));

    innodb_srv_conc_enter_innodb(prebuilt->trx);

    ret = row_search_for_mysql((byte*)buf, 0, prebuilt, match_mode, direction);

    innodb_srv_conc_exit_innodb(prebuilt->trx);

    switch (ret) {
    case DB_SUCCESS:
        error = 0;
        table->status = 0;
        break;
    case DB_RECORD_NOT_FOUND:
        error = HA_ERR_END_OF_FILE;
        table->status = STATUS_NOT_FOUND;
        break;
    case DB_END_OF_INDEX:
        error = HA_ERR_END_OF_FILE;
        table->status = STATUS_NOT_FOUND;
        break;
    default:
        error = convert_error_code_to_mysql(
            (int) ret, prebuilt->table->flags, user_thd);
        table->status = STATUS_NOT_FOUND;
        break;
    }

    DBUG_RETURN(error);
}
复制代码

 

posted @   taek  阅读(339)  评论(0编辑  收藏  举报
编辑推荐:
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
· 程序员常用高效实用工具推荐,办公效率提升利器!
点击右上角即可分享
微信分享提示