안녕하세요. select
distinct source
from pg_settings;
source
-------------------
client
configuration file
database
session
override 위에서 다른 것은 다 이해가 되는데 override 에 대해서는 잘 모르겠습니다.
구글링해도 의미를 잘 모르겠습니다.
어떤 의미인지 알고 싶습니다.
감사합니다.
현재 설정값이 지정된 출처가 어디인지를 알리는 것이 source 입니다.
이 놈도 pg_settings.context 처럼 우선 순위가 있어,
const char *const GucSource_Names[] = { /* PGC_S_DEFAULT */ "default", /* PGC_S_DYNAMIC_DEFAULT */ "default", /* PGC_S_ENV_VAR */ "environment variable", /* PGC_S_FILE */ "configuration file", /* PGC_S_ARGV */ "command line", /* PGC_S_GLOBAL */ "global", /* PGC_S_DATABASE */ "database", /* PGC_S_USER */ "user", /* PGC_S_DATABASE_USER */ "database user", /* PGC_S_CLIENT */ "client", /* PGC_S_OVERRIDE */ "override", /* PGC_S_INTERACTIVE */ "interactive", /* PGC_S_TEST */ "test", /* PGC_S_SESSION */ "session" };
11 버전 기준 이런 우선순위를 가지네요. 아래로 내려갈수록 우선순위가 높음.
어떤 설정값이 변경 되고 난뒤 reset (초기 설정값으로 재조정할 때, 이 override 이하 우선순위는 reset 하지 않을 용도로 사용됩니다.
자세한 내용은 src/backend/utils/misc/guc.c 코드를 살펴보세요. (ResetAllOptions() 함수 참조)
일반 DB 운영자 입장에서는 source 쪽까지 관심 가질 필요 없이, context만 알고 있으면 됩니다.