zoukankan      html  css  js  c++  java
  • PostgreSQL的 initdb 源代码分析之二十一

    继续分析:

        setup_schema();

    展开:

    实质就是创建info_schema。

    cmd 是:

    "/home/pgsql/project/bin/postgres" --single -F -O -c search_path=pg_catalog -c exit_on_error=true -j template1 >/dev/null

    infor_schem_file是:/home/pgsql/project/share/information_schema.sql

    /*
     * load info schema and populate from features file
     */
    static void
    setup_schema(void)
    {
        PG_CMD_DECL;
        char      **line;
        char      **lines;
    
        fputs(_("creating information schema ... "), stdout);
        fflush(stdout);
    
        lines = readfile(info_schema_file);
    
        ///fprintf(stderr,"
    ====================info_schema_file is: %s
    ", info_schema_file);
    
        /*
         * We use -j here to avoid backslashing stuff in information_schema.sql
         */
        snprintf(cmd, sizeof(cmd),
                 ""%s" %s -j template1 >%s",
                 backend_exec, backend_options,
                 DEVNULL);
    
        ///fprintf(stderr,"
    =====================cmd is: %s 
    ",cmd);
    
        PG_CMD_OPEN;
    
        for (line = lines; *line != NULL; line++)
        {
            PG_CMD_PUTS(*line);
            free(*line);
        }
    
        free(lines);
    
        PG_CMD_CLOSE;
    
        snprintf(cmd, sizeof(cmd),
                 ""%s" %s template1 >%s",
                 backend_exec, backend_options,
                 DEVNULL);
    
        PG_CMD_OPEN;
    
        PG_CMD_PRINTF1("UPDATE information_schema.sql_implementation_info "
                       "  SET character_value = '%s' "
                       "  WHERE implementation_info_name = 'DBMS VERSION';
    ",
                       infoversion);
    
        PG_CMD_PRINTF1("COPY information_schema.sql_features "
                       "  (feature_id, feature_name, sub_feature_id, "
                       "  sub_feature_name, is_supported, comments) "
                       " FROM E'%s';
    ",
                       escape_quotes(features_file));
    
        PG_CMD_CLOSE;
    
        check_ok();
    }
  • 相关阅读:
    pm2进阶使用
    javascript装饰器模式
    pupeteer初体验
    重构:从Promise到Async/Await
    # electron-vue 尝试做个网易云音乐
    Kafka监控:主要性能指标
    生产环境Rabbitmq集群安装部署与配置
    Java同步块(synchronized block)
    RabbitMQ高可用镜像队列
    kafka-0.9消费者新API
  • 原文地址:https://www.cnblogs.com/gaojian/p/3179278.html
Copyright © 2011-2022 走看看