From 002c2805a8d3663d798b9d925b21d40633960ec4 Mon Sep 17 00:00:00 2001 From: Tigran Mkrtchyan Date: Wed, 15 Mar 2023 10:48:29 +0100 Subject: [PATCH] chimera: fix PostgreSQL optimization for labels current code is broken as looks for wrong constrain and passes invalid number of arguments. Acked-by: Marina Sahakyan Target: master, 9.0, 8.2 Require-book: no Require-notes: yes --- .../org/dcache/chimera/PgSQL95FsSqlDriver.java | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/modules/chimera/src/main/java/org/dcache/chimera/PgSQL95FsSqlDriver.java b/modules/chimera/src/main/java/org/dcache/chimera/PgSQL95FsSqlDriver.java index 05be731d31d..322dcf1fc7c 100644 --- a/modules/chimera/src/main/java/org/dcache/chimera/PgSQL95FsSqlDriver.java +++ b/modules/chimera/src/main/java/org/dcache/chimera/PgSQL95FsSqlDriver.java @@ -349,8 +349,8 @@ void addLabel(FsInode inode, String labelname) throws ChimeraFsException { int n = _jdbc.update( con -> { PreparedStatement ps = con.prepareStatement( - "INSERT INTO t_labels ( labelname) VALUES (?)" - + "ON CONFLICT ON CONSTRAINT labelname DO NOTHING", + "INSERT INTO t_labels (labelname) VALUES (?)" + + "ON CONFLICT ON CONSTRAINT t_labels_labelname_key DO NOTHING", Statement.RETURN_GENERATED_KEYS); ps.setString(1, labelname); @@ -363,23 +363,14 @@ void addLabel(FsInode inode, String labelname) throws ChimeraFsException { label_id, inode.ino()); } else { - - - Long label_id = getLabel(labelname); - + long label_id = getLabel(labelname); _jdbc.update( - "INSERT INTO t_labels_ref (label_id, inumber) (SELECT * FROM (VALUES (?,?)) " + "INSERT INTO t_labels_ref (label_id, inumber) VALUES (?,?) " + "ON CONFLICT ON CONSTRAINT i_label_pkey DO NOTHING", - ps -> { ps.setLong(1, label_id); ps.setLong(2, inode.ino()); - ps.setLong(3, label_id); - ps.setLong(4, inode.ino()); - }); - - } } catch (EmptyResultDataAccessException e) {