PostgreSQL中SET search_path的用途及Apache AGE相关代码解析
PostgreSQL中SET search_path的作用
SET search_path是PostgreSQL用来指定对象搜索顺序的命令。当你引用一个没有显式指定模式的对象(比如表、函数、自定义类型)时,PostgreSQL会按照search_path里的模式顺序依次查找,找到第一个匹配的对象就停止搜索。
代码SET search_path = ag_catalog, "$user", public;各部分含义
- ag_catalog:这是Apache AGE图扩展的核心系统模式,里面存储了AGE所有的内置函数(比如
create_graph、cypher)、图数据类型(graph、vertex、edge)和系统表。把它放在首位,能确保调用AGE相关功能时,优先匹配到扩展提供的正确对象,避免和其他模式下的同名对象冲突。 - "$user":这是PostgreSQL的特殊变量,指代当前登录用户对应的同名模式。如果当前用户存在一个和自己用户名同名的模式,PostgreSQL会优先在这个模式里查找对象;如果该模式不存在,这个条目会被自动忽略。
- public:PostgreSQL默认创建的公共模式,所有用户默认拥有访问权限,通常用来存放用户自定义的通用表、函数等对象。
搜索路径位置可取值类型
除了上述三个值,还可以填入以下类型的内容:
- 自定义模式名:比如你手动创建的
my_app_schema,直接写入即可。 pg_catalog:PostgreSQL的核心系统模式,存放所有内置系统函数、基础数据类型和系统表。默认情况下它会被隐式添加到搜索路径最前端,除非你显式修改路径将其排除或调整位置。DEFAULT:用来重置搜索路径为默认值(默认是"$user", public)。.:代表当前模式,不过实际使用中很少用到。
内容的提问来源于stack exchange,提问作者abhishek2046
相关产品推荐
相关产品推荐

