我有一个非常简单的要求 - PostgreSQL 日志目录应该有固定的最大大小,例如所有 PostgreSQL 日志的最大大小为 10 GB。
它可以通过创建固定大小的日志并使用日志轮换(例如轮换10个日志文件,每个日志文件1 GB)来实现。
我尝试使用 PostgreSQL 日志记录配置进行设置,但没有成功。问题是“log_truncate_on_rotation”不适用于基于大小的旋转,仅适用于基于时间的旋转。
所以,我的问题是 - 可以仅使用 PostgreSQL 配置来实现还是我必须使用其他东西?如果没有,为什么 PostgreSQL 没有这个功能?
我有几个选择:
有人可以告诉我为什么这不起作用:
@Test
public void should_parse_json() {
Expression expression = new SpelExpressionParser().parseExpression("#jsonPath(get('JsonData'), '$.someData')");
Map<String, Object> data = new HashMap<>();
data.put("JsonData", "{\"someData\": 100}");
StandardEvaluationContext context = new StandardEvaluationContext(data);
context.addPropertyAccessor(new JsonPropertyAccessor());
assertThat(expression.getValue(context, Object.class)).isEqualTo(100);
}
Run Code Online (Sandbox Code Playgroud)
我收到错误“org.springframework.expression.spel.SpelEvaluationException:EL1006E:找不到函数‘jsonPath’”
我在类路径中有以下 jar:
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
SPEL 文档对我没有帮助。
我正在尝试创建一个函数,该函数应该将表行映射到我的用户定义类型(这是复合类型)并返回结果。如果该表中的某些列为 NULL,则IS NOT NULL检查我的自定义类型不起作用!
我有一个简单的复合类型:
CREATE TYPE my_custom_type AS (
sender VARCHAR(30),
destination VARCHAR(30),
count INTEGER
);
Run Code Online (Sandbox Code Playgroud)
还有一张桌子:
CREATE TABLE messages (
id INTEGER PRIMARY KEY,
sender VARCHAR(30),
destination VARCHAR(30),
count INTEGER
);
Run Code Online (Sandbox Code Playgroud)
在此示例中插入单行:
INSERT INTO messages VALUES (1, 'sender', 'destination', 100);
Run Code Online (Sandbox Code Playgroud)
现在我想创建一个函数,它将将该行作为自定义 Postgres 类型返回:
CREATE OR REPLACE FUNCTION my_custom_function()
RETURNS my_custom_type AS
$$
DECLARE
result my_custom_type;
BEGIN
SELECT sender, destination, count
FROM messages
LIMIT 1
INTO result;
IF result IS NULL THEN
RAISE EXCEPTION 'no data'; …Run Code Online (Sandbox Code Playgroud)