继续分析:

  1. make_template0();

展开:

无需再作解释,就是创建template0数据库

  1. /*
  2. * copy template1 to template0
  3. */
  4. static void
  5. make_template0(void)
  6. {
  7. PG_CMD_DECL;
  8. const char **line;
  9. static const char *template0_setup[] = {
  10. "CREATE DATABASE template0;\n",
  11. "UPDATE pg_database SET "
  12. " datistemplate = 't', "
  13. " datallowconn = 'f' "
  14. " WHERE datname = 'template0';\n",
  15.  
  16. /*
  17. * We use the OID of template0 to determine lastsysoid
  18. */
  19. "UPDATE pg_database SET datlastsysoid = "
  20. " (SELECT oid FROM pg_database "
  21. " WHERE datname = 'template0');\n",
  22.  
  23. /*
  24. * Explicitly revoke public create-schema and create-temp-table
  25. * privileges in template1 and template0; else the latter would be on
  26. * by default
  27. */
  28. "REVOKE CREATE,TEMPORARY ON DATABASE template1 FROM public;\n",
  29. "REVOKE CREATE,TEMPORARY ON DATABASE template0 FROM public;\n",
  30.  
  31. "COMMENT ON DATABASE template0 IS 'unmodifiable empty database';\n",
  32.  
  33. /*
  34. * Finally vacuum to clean up dead rows in pg_database
  35. */
  36. "VACUUM FULL pg_database;\n",
  37. NULL
  38. };
  39.  
  40. fputs(_("copying template1 to template0 ... "), stdout);
  41. fflush(stdout);
  42.  
  43. snprintf(cmd, sizeof(cmd),
  44. "\"%s\" %s template1 >%s",
  45. backend_exec, backend_options,
  46. DEVNULL);
  47.  
  48. PG_CMD_OPEN;
  49.  
  50. for (line = template0_setup; *line; line++)
  51. PG_CMD_PUTS(*line);
  52.  
  53. PG_CMD_CLOSE;
  54.  
  55. check_ok();
  56. }

由此而知,在initdb工作的时候,是先创建的template1数据库,再创建template01数据库。

PostgreSQL的 initdb 源代码分析之二十四的更多相关文章

  1. PostgreSQL的 initdb 源代码分析之二十五

    继续分析: make_postgres(); 展开: 目的是创建postgres数据库. cmd是:/home/pgsql/project/bin/postgres" --single -F ...

  2. PostgreSQL的 initdb 源代码分析之二十二

    继续分析 load_plpgsql(); 展开: 就是让postgres 执行 create extension plpgsql cmd是: "/home/pgsql/project/bin ...

  3. PostgreSQL的 initdb 源代码分析之二十

    继续分析: setup_privileges(); 展开: 这是设置权限. 其cmd是:"/home/pgsql/project/bin/postgres" --single -F ...

  4. PostgreSQL的 initdb 源代码分析之二

    继续分析 下面这一段,当 initdb --version 或者  initdb --help 才有意义. ) { ], || strcmp(argv[], ) { usage(progname); ...

  5. PostgreSQL的 initdb 源代码分析之二十三

    继续分析: vacuum_db(); 展开: cmd是:/home/pgsql/project/bin/postgres" --single -F -O -c search_path=pg_ ...

  6. PostgreSQL的 initdb 源代码分析之二十一

    继续分析: setup_schema(); 展开: 实质就是创建info_schema. cmd 是: "/home/pgsql/project/bin/postgres" --s ...

  7. Redis源代码分析(二十四)--- tool工具类(2)

    在上篇文章中初步的分析了一下,Redis工具类文件里的一些使用方法,包含2个随机算法和循环冗余校验算法,今天,继续学习Redis中的其它的一些辅助工具类的使用方法.包含里面的大小端转换算法,sha算法 ...

  8. PostgreSQL的 initdb 源代码分析之十二

    继续分析 /* Now create all the text config files */ setup_config(); 将其展开: 实质就是,确定各种参数,分别写入 postgresql.co ...

  9. PostgreSQL的 initdb 源代码分析之十五

    继续分析: if (pwprompt || pwfilename) get_set_pwd(); 由于我启动initdb的时候,没有设置口令相关的选项,故此略过. 接下来: setup_depend( ...

随机推荐

  1. T-SQL备忘(1):表联接

    测试用例表如下: 1.取2个成员表中的交集(A∩B) T-SQL: select Member1.Name,Member1.Age from Member1 join Member2 on Membe ...

  2. 系统性能监控之vmstat和iostat命令

    这篇文章主要介绍一些Linux性能检测相关的命令. vmstat和iostat的两个命令可以运行在主流的Linux/Unix操作系统上. 如果vmstat和iostat命令不能再你的电脑上运行,请安装 ...

  3. 【转】iOS 通过xib自定义UITableViewCell【原创】

    原文网址:http://blog.it985.com/9683.html 在使用tableView的时候,如果cell的布局过于复杂,通过代码搭建的话不够直观.并且要不停的调整位置,字体什么的.这时, ...

  4. 一个响应式框架——agera

    Google在上周开源了一个响应式框架——agera,相信它会慢慢地被广大程序员所熟知.我个人对这样的技术是很感兴趣的,在这之前也研究过RxJava,所以在得知Google开源了这样的框架之后第一时间 ...

  5. Android UI开发详解之Fragment

    Fragment是Android自从3.0之后新加入的一个组件,我相信很多人都已经听说过这个组件了,但这个组件到底是个什么,如何去使用他呢,且听我讲来. 以下部分资料来自官网(官网才是王道,其他都是浮 ...

  6. hdu 2087-剪花布条(KMP)

    题意: 求文本串最多可以分成几个模式串. 分析: KMP #include <map> #include <set> #include <list> #includ ...

  7. 带宽计算-大B与小b的区别

    原文来自:http://blog.sina.com.cn/s/blog_4b9c0e3601008yf9.html 在计算机网络.IDC机房中,其宽带速率的单位用bps(或b/s)表示:换算关系为:1 ...

  8. jQuery常用的正则表达式

    [导读] 本文章提供了大量的jQuery正则表达式,有电话号码,密码,用户名,邮箱,哈能输入字符等,有需要的朋友可以参考一下. 代码如下复制代码 <!DOCTYPE html PUBLIC &q ...

  9. ASP.NET导出数据到Excel 实例介绍

    ASP.NET导出数据到Excel  该方法只是把asp.net页面保存成html页面只是把后缀改为xlc不过excel可以读取,接下连我看看还有别的方式能导出数据,并利用模版生成. 下面是代码 新建 ...

  10. springmvc的一些优化设置

    1.配置文件的优化: 无需使用 <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotatio ...