• 2023-09-12 mysql-代号m-添加字段且字段非空出错-问题分析


    摘要:

    2023-09-12 mysql-代号m-添加字段且字段非空出错-问题分析

    上下文:


    2023-09-11 mysql-代号m-0930阶段目标-任务列表-记录_财阀悟世的博客-CSDN博客

    https://devops.aliyun.com/projex/project/36ed2d8a9a29e7f8407c6f5498/bug/7398227ae8b85743d94335b698

    DDL:

    表结构和数据:

    1. CREATE TABLE t_test(
    2. id INT NOT NULL AUTO_INCREMENT,
    3. first_name VARCHAR(10) NOT NULL,
    4. last_name VARCHAR(10) NOT NULL,
    5. sex VARCHAR(5) NOT NULL,
    6. score INT NOT NULL,
    7. copy_id INT NOT NULL,
    8. PRIMARY KEY (`id`)
    9. );
    10. insert into t_test values(1,'张','三','男',10,1),(2,'李','四','女',20,2),(3,'王','五','男',30,3);
    11. select * from t_test;
    12. show create table t_test\G

    alter语句:

    alter table t_test add column age smallint not null;
    

    问题现象:

    错误日志:

    SQLException:assert:40002!UPDATE: NOT NULL constraint violated for column 't_test.age'
    

    monetdb的处理:

    直接结果:

    1. sql>alter table t_test add column age int not null;
    2. UPDATE: NOT NULL constraint violated for column 't_test.age'

    对应的函数:

    1. static void
    2. sql_update_check_null(backend *be, sql_table *t, stmt **updates)
    3. {
    4. mvc *sql = be->mvc;
    5. node *n;
    6. sql_subfunc *cnt = sql_bind_func(sql, "sys", "count", sql_bind_localtype("void"), NULL, F_AGGR, true);
    7. for (n = ol_first_node(t->columns); n; n = n->next) {
    8. sql_column *c = n->data;
    9. if (updates[c->colnr] && !c->null) {
    10. stmt *s = updates[c->colnr];
    11. char *msg = NULL;
    12. if (!(s->key && s->nrcols == 0)) {
    13. s = stmt_selectnil(be, updates[c->colnr]);
    14. s = stmt_aggr(be, s, NULL, NULL, cnt, 1, 0, 1);
    15. } else {
    16. sql_subfunc *isnil = sql_bind_func(sql, "sys", "isnull", &c->type, NULL, F_FUNC, true);
    17. s = stmt_unop(be, updates[c->colnr], NULL, isnil);
    18. }
    19. msg = sa_message(sql->sa, SQLSTATE(40002) "UPDATE: NOT NULL constraint violated for column '%s.%s'", c->t->base.name, c->base.name);
    20. (void)stmt_exception(be, s, msg, 00001);
    21. }
    22. }
    23. }

    调用堆栈:

    1. #0 sql_update_check_null (be=0x7f71d40e75b0, t=0x7f71a7dddc70, updates=0x7f71a7ddfa90) at /root/work/trunk/mysql-server-mysql-8.0.33/storage/monetdb/sql/backends/monet5/rel_bin.c:5183
    2. #1 0x00007f73c85d4c3d in rel2bin_update (be=0x7f71d40e75b0, rel=0x7f71a7ddec20, refs=0x7f71a7ddf380) at /root/work/trunk/mysql-server-mysql-8.0.33/storage/monetdb/sql/backends/monet5/rel_bin.c:5309
    3. #2 0x00007f73c85d9c52 in subrel_bin (be=0x7f71d40e75b0, rel=0x7f71a7ddec20, refs=0x7f71a7ddf380) at /root/work/trunk/mysql-server-mysql-8.0.33/storage/monetdb/sql/backends/monet5/rel_bin.c:6392
    4. #3 0x00007f73c85d9efc in output_rel_bin (be=0x7f71d40e75b0, rel=0x7f71a7ddec20, top=1) at /root/work/trunk/mysql-server-mysql-8.0.33/storage/monetdb/sql/backends/monet5/rel_bin.c:6449
    5. #4 0x00007f73c8607269 in sql_relation2stmt (be=0x7f71d40e75b0, r=0x7f71a7ddec20, top=1) at /root/work/trunk/mysql-server-mysql-8.0.33/storage/monetdb/sql/backends/monet5/sql_gencode.c:762
    6. #5 0x00007f73c860751c in backend_dumpstmt (be=0x7f71d40e75b0, mb=0x7f71d40bb590, r=0x7f71a7ddec20, top=1, add_end=0, query=0x7f71a7dddae0 "alter table t_test add column age3 int not null;")
    7. at /root/work/trunk/mysql-server-mysql-8.0.33/storage/monetdb/sql/backends/monet5/sql_gencode.c:813
    8. #6 0x00007f73c85a7bf9 in SQLparser (c=0x7f71d415ade0) at /root/work/trunk/mysql-server-mysql-8.0.33/storage/monetdb/sql/backends/monet5/sql_scenario.c:1214
    9. #7 0x00007f73ca9101ae in monetdbe_query_internal (mdbe=0x7f71d40fb640, query=0x7f71d410eb60 "alter table t_test add column age3 int not null;", result=0x0, affected_rows=0x7f73741f1778,
    10. prepare_id=0x0, language=83 'S') at /root/work/trunk/mysql-server-mysql-8.0.33/storage/monetdb/tools/monetdbe/monetdbe.c:409
    11. #8 0x00007f73ca91586c in monetdbe_query (dbhdl=0x7f71d40fb640, query=0x7f71d410eb60 "alter table t_test add column age3 int not null;", result=0x0, affected_rows=0x7f73741f1778)
    12. at /root/work/trunk/mysql-server-mysql-8.0.33/storage/monetdb/tools/monetdbe/monetdbe.c:1521
    13. #9 0x000000000389487a in Mondetdb_Adaptor::execute_query (this=0xc0aa1a0, dbname=0x7f71d400e170 "test_join", sql=0x7f71d40a5c30 "alter table t_test add column age3 int not null", set_status=false)
    14. at /root/work/trunk/mysql-server-mysql-8.0.33/sql/monetdb_adaptor/monetdb_adaptor.cc:321
    15. #10 0x0000000003e45e1b in Sql_cmd_alter_table::execute (this=0x7f71d40a7670, thd=0x7f71d40150e0) at /root/work/trunk/mysql-server-mysql-8.0.33/sql/sql_alter.cc:367
    16. #11 0x00000000036c06cb in mysql_execute_command (thd=0x7f71d40150e0, first_level=true) at /root/work/trunk/mysql-server-mysql-8.0.33/sql/sql_parse.cc:4714
    17. #12 0x00000000036c2987 in dispatch_sql_command (thd=0x7f71d40150e0, parser_state=0x7f73741f38b0) at /root/work/trunk/mysql-server-mysql-8.0.33/sql/sql_parse.cc:5363
    18. #13 0x00000000036b86d0 in dispatch_command (thd=0x7f71d40150e0, com_data=0x7f73741f49a0, command=COM_QUERY) at /root/work/trunk/mysql-server-mysql-8.0.33/sql/sql_parse.cc:2050
    19. #14 0x00000000036b6618 in do_command (thd=0x7f71d40150e0) at /root/work/trunk/mysql-server-mysql-8.0.33/sql/sql_parse.cc:1439
    20. #15 0x000000000393b45a in handle_connection (arg=0xc03c9e0) at /root/work/trunk/mysql-server-mysql-8.0.33/sql/conn_handler/connection_handler_per_thread.cc:302
    21. #16 0x0000000005949155 in pfs_spawn_thread (arg=0xc168e60) at /root/work/trunk/mysql-server-mysql-8.0.33/storage/perfschema/pfs.cc:3042
    22. #17 0x00007f73ca62b1ca in start_thread () from /lib64/libpthread.so.0
    23. #18 0x00007f73c8bdbe73 in clone () from /lib64/libc.so.6

  • 相关阅读:
    解决:yarn 无法加载文件 “C:\Users\XXXXX\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本“ 的问题
    二百零一、Flink——Flink配置状态后端运行后报错:Can not create a Path from an empty string
    【微信小程序】博客小程序,静态版本(三)设计和开发首页、个人关于页
    uni-app props不能传递function的问题
    Ubuntu上通过源码方式安装Redis
    mybatis foeahe 批量插入 删除 修改
    svg 知识点总结
    1100:金币(信奥)
    网络安全如何利用ReconPal将自然语言处理技术应用于信息安全
    Java反射
  • 原文地址:https://blog.csdn.net/adofsauron/article/details/132838505