Tenant Configuration values varchar to text - support bigger values f… (#2938)

* Tenant Configuration values varchar to text - support bigger values for configs
access_control_context varchar to text - support bigger values for configs

* Add size constraint in App for Tenant 'conf.value' and rollout/target_filter_query 'access_control_context

* add explicitly not null constraint for clarity
This commit is contained in:
Vasil Ilchev
2026-02-26 12:15:43 +02:00
committed by GitHub
parent 14f754b30e
commit 937195af1e
12 changed files with 40 additions and 13 deletions

View File

@@ -34,6 +34,11 @@ public interface Rollout extends NamedEntity {
*/ */
int APPROVAL_REMARK_MAX_SIZE = 255; int APPROVAL_REMARK_MAX_SIZE = 255;
/**
* Maximum length of access control context.
*/
int ACCESS_CONTROL_CONTEXT_MAX_SIZE = 32768;
/** /**
* @return <code>true</code> if the rollout is deleted and only kept for * @return <code>true</code> if the rollout is deleted and only kept for
* history purposes. * history purposes.

View File

@@ -46,6 +46,11 @@ public interface TargetFilterQuery extends TenantAwareBaseEntity {
*/ */
int QUERY_MAX_SIZE = 1024; int QUERY_MAX_SIZE = 1024;
/**
* Maximum length of access control context.
*/
int ACCESS_CONTROL_CONTEXT_MAX_SIZE = 32768;
/** /**
* Allowed values for auto-assign action type * Allowed values for auto-assign action type
*/ */

View File

@@ -22,7 +22,7 @@ public interface TenantConfiguration extends TenantAwareBaseEntity {
/** /**
* Maximum length of tenant configuration value. * Maximum length of tenant configuration value.
*/ */
int VALUE_MAX_SIZE = 512; int VALUE_MAX_SIZE = 32768;
/** /**
* @return key of the entry * @return key of the entry

View File

@@ -111,7 +111,7 @@ CREATE TABLE sp_tenant_configuration (
optlock_revision BIGINT, optlock_revision BIGINT,
tenant VARCHAR(40) NOT NULL, tenant VARCHAR(40) NOT NULL,
conf_key VARCHAR(128) NOT NULL, conf_key VARCHAR(128) NOT NULL,
conf_value VARCHAR(512) NOT NULL, conf_value CLOB NOT NULL,
PRIMARY KEY (id) PRIMARY KEY (id)
); );
CREATE UNIQUE INDEX uk_tenant_configuration ON sp_tenant_configuration (conf_key, tenant); CREATE UNIQUE INDEX uk_tenant_configuration ON sp_tenant_configuration (conf_key, tenant);
@@ -244,7 +244,7 @@ CREATE TABLE sp_rollout (
approval_decided_by VARCHAR(64), approval_decided_by VARCHAR(64),
approval_remark VARCHAR(255), approval_remark VARCHAR(255),
weight INTEGER NOT NULL, weight INTEGER NOT NULL,
access_control_context VARCHAR(4096), access_control_context CLOB,
is_dynamic BOOLEAN, is_dynamic BOOLEAN,
PRIMARY KEY (id) PRIMARY KEY (id)
); );
@@ -305,7 +305,7 @@ CREATE TABLE sp_target_filter_query (
auto_assign_weight INTEGER NOT NULL, auto_assign_weight INTEGER NOT NULL,
auto_assign_initiated_by VARCHAR(64), auto_assign_initiated_by VARCHAR(64),
confirmation_required BOOLEAN, confirmation_required BOOLEAN,
access_control_context VARCHAR(4096), access_control_context CLOB,
PRIMARY KEY (id) PRIMARY KEY (id)
); );
CREATE UNIQUE INDEX uk_target_filter_query ON sp_target_filter_query (name, tenant); CREATE UNIQUE INDEX uk_target_filter_query ON sp_target_filter_query (name, tenant);

View File

@@ -0,0 +1,3 @@
ALTER TABLE sp_tenant_configuration ALTER COLUMN conf_value CLOB NOT NULL;
ALTER TABLE sp_target_filter_query ALTER COLUMN access_control_context CLOB;
ALTER TABLE sp_rollout ALTER COLUMN access_control_context CLOB;

View File

@@ -111,7 +111,7 @@ CREATE TABLE sp_tenant_configuration (
optlock_revision BIGINT, optlock_revision BIGINT,
tenant VARCHAR(40) NOT NULL, tenant VARCHAR(40) NOT NULL,
conf_key VARCHAR(128) NOT NULL, conf_key VARCHAR(128) NOT NULL,
conf_value VARCHAR(512) NOT NULL, conf_value TEXT NOT NULL,
PRIMARY KEY (id) PRIMARY KEY (id)
); );
CREATE UNIQUE INDEX uk_tenant_configuration ON sp_tenant_configuration (conf_key, tenant); CREATE UNIQUE INDEX uk_tenant_configuration ON sp_tenant_configuration (conf_key, tenant);
@@ -244,7 +244,7 @@ CREATE TABLE sp_rollout (
approval_decided_by VARCHAR(64), approval_decided_by VARCHAR(64),
approval_remark VARCHAR(255), approval_remark VARCHAR(255),
weight INTEGER NOT NULL, weight INTEGER NOT NULL,
access_control_context VARCHAR(4096), access_control_context TEXT,
is_dynamic BOOLEAN, is_dynamic BOOLEAN,
PRIMARY KEY (id) PRIMARY KEY (id)
); );
@@ -305,7 +305,7 @@ CREATE TABLE sp_target_filter_query (
auto_assign_weight INTEGER NOT NULL, auto_assign_weight INTEGER NOT NULL,
auto_assign_initiated_by VARCHAR(64), auto_assign_initiated_by VARCHAR(64),
confirmation_required BOOLEAN, confirmation_required BOOLEAN,
access_control_context VARCHAR(4096), access_control_context TEXT,
PRIMARY KEY (id) PRIMARY KEY (id)
); );
CREATE UNIQUE INDEX uk_target_filter_query ON sp_target_filter_query (name, tenant); CREATE UNIQUE INDEX uk_target_filter_query ON sp_target_filter_query (name, tenant);

View File

@@ -0,0 +1,3 @@
ALTER TABLE sp_tenant_configuration MODIFY conf_value TEXT NOT NULL;
ALTER TABLE sp_target_filter_query MODIFY access_control_context TEXT;
ALTER TABLE sp_rollout MODIFY access_control_context TEXT;

View File

@@ -111,7 +111,7 @@ CREATE TABLE sp_tenant_configuration (
optlock_revision BIGINT, optlock_revision BIGINT,
tenant VARCHAR(40) NOT NULL, tenant VARCHAR(40) NOT NULL,
conf_key VARCHAR(128) NOT NULL, conf_key VARCHAR(128) NOT NULL,
conf_value VARCHAR(512) NOT NULL, conf_value TEXT NOT NULL,
PRIMARY KEY (id) PRIMARY KEY (id)
); );
CREATE UNIQUE INDEX uk_tenant_configuration ON sp_tenant_configuration (conf_key, tenant); CREATE UNIQUE INDEX uk_tenant_configuration ON sp_tenant_configuration (conf_key, tenant);
@@ -244,7 +244,7 @@ CREATE TABLE sp_rollout (
approval_decided_by VARCHAR(64), approval_decided_by VARCHAR(64),
approval_remark VARCHAR(255), approval_remark VARCHAR(255),
weight INTEGER NOT NULL, weight INTEGER NOT NULL,
access_control_context VARCHAR(4096), access_control_context TEXT,
is_dynamic BOOLEAN, is_dynamic BOOLEAN,
PRIMARY KEY (id) PRIMARY KEY (id)
); );
@@ -305,7 +305,7 @@ CREATE TABLE sp_target_filter_query (
auto_assign_weight INTEGER NOT NULL, auto_assign_weight INTEGER NOT NULL,
auto_assign_initiated_by VARCHAR(64), auto_assign_initiated_by VARCHAR(64),
confirmation_required BOOLEAN, confirmation_required BOOLEAN,
access_control_context VARCHAR(4096), access_control_context TEXT,
PRIMARY KEY (id) PRIMARY KEY (id)
); );
CREATE UNIQUE INDEX uk_target_filter_query ON sp_target_filter_query (name, tenant); CREATE UNIQUE INDEX uk_target_filter_query ON sp_target_filter_query (name, tenant);

View File

@@ -0,0 +1,5 @@
ALTER TABLE sp_tenant_configuration
ALTER COLUMN conf_value TYPE TEXT,
ALTER COLUMN conf_value SET NOT NULL;
ALTER TABLE sp_target_filter_query ALTER COLUMN access_control_context TYPE TEXT;
ALTER TABLE sp_rollout ALTER COLUMN access_control_context TYPE TEXT;

View File

@@ -22,6 +22,7 @@ import jakarta.persistence.Converter;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.FetchType; import jakarta.persistence.FetchType;
import jakarta.persistence.JoinColumn; import jakarta.persistence.JoinColumn;
import jakarta.persistence.Lob;
import jakarta.persistence.ManyToOne; import jakarta.persistence.ManyToOne;
import jakarta.persistence.NamedAttributeNode; import jakarta.persistence.NamedAttributeNode;
import jakarta.persistence.NamedEntityGraph; import jakarta.persistence.NamedEntityGraph;
@@ -147,6 +148,8 @@ public class JpaRollout extends AbstractJpaNamedEntity implements Rollout, Event
@Setter @Setter
@Column(name = "access_control_context") @Column(name = "access_control_context")
@Lob
@Size(max = Rollout.ACCESS_CONTROL_CONTEXT_MAX_SIZE)
private String accessControlContext; private String accessControlContext;
@Setter @Setter

View File

@@ -16,6 +16,7 @@ import jakarta.persistence.Convert;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.FetchType; import jakarta.persistence.FetchType;
import jakarta.persistence.JoinColumn; import jakarta.persistence.JoinColumn;
import jakarta.persistence.Lob;
import jakarta.persistence.ManyToOne; import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotEmpty;
@@ -73,6 +74,8 @@ public class JpaTargetFilterQuery extends AbstractJpaTenantAwareBaseEntity imple
private boolean confirmationRequired; private boolean confirmationRequired;
@Column(name = "access_control_context") @Column(name = "access_control_context")
@Lob
@Size(max = TargetFilterQuery.ACCESS_CONTROL_CONTEXT_MAX_SIZE)
private String accessControlContext; private String accessControlContext;
public JpaTargetFilterQuery(final String name, final String query, final DistributionSet autoAssignDistributionSet, public JpaTargetFilterQuery(final String name, final String query, final DistributionSet autoAssignDistributionSet,

View File

@@ -9,9 +9,9 @@
*/ */
package org.eclipse.hawkbit.repository.jpa.model; package org.eclipse.hawkbit.repository.jpa.model;
import jakarta.persistence.Basic;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.Lob;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size; import jakarta.validation.constraints.Size;
@@ -42,8 +42,8 @@ public class JpaTenantConfiguration extends AbstractJpaTenantAwareBaseEntity imp
@NotNull @NotNull
private String key; private String key;
@Column(name = "conf_value", length = TenantConfiguration.VALUE_MAX_SIZE, nullable = false) @Column(name = "conf_value", nullable = false)
@Basic @Lob
@Size(max = TenantConfiguration.VALUE_MAX_SIZE) @Size(max = TenantConfiguration.VALUE_MAX_SIZE)
@NotNull @NotNull
private String value; private String value;