181 lines
8.0 KiB
Twig
181 lines
8.0 KiB
Twig
{% set partition_options = [
|
|
'',
|
|
'HASH',
|
|
'LINEAR HASH',
|
|
'KEY',
|
|
'LINEAR KEY',
|
|
'RANGE',
|
|
'RANGE COLUMNS',
|
|
'LIST',
|
|
'LIST COLUMNS'
|
|
] %}
|
|
{% set sub_partition_options = ['', 'HASH', 'LINEAR HASH', 'KEY', 'LINEAR KEY'] %}
|
|
{% set value_type_options = ['', 'LESS THAN', 'LESS THAN MAXVALUE', 'IN'] %}
|
|
|
|
<table class="table table-borderless w-auto align-middle mb-0" id="partition_table">
|
|
<tr class="align-middle">
|
|
<td><label for="partition_by">{% trans 'Partition by:' %}</label></td>
|
|
<td>
|
|
<select name="partition_by" id="partition_by">
|
|
{% for option in partition_options %}
|
|
<option value="{{ option }}"
|
|
{%- if partition_details['partition_by'] == option %}
|
|
selected="selected"
|
|
{%- endif %}>
|
|
{{ option }}
|
|
</option>
|
|
{% endfor %}
|
|
</select>
|
|
</td>
|
|
<td>
|
|
(<input name="partition_expr" type="text"
|
|
placeholder="{% trans 'Expression or column list' %}"
|
|
value="{{ partition_details['partition_expr'] }}">)
|
|
</td>
|
|
</tr>
|
|
<tr class="align-middle">
|
|
<td><label for="partition_count">{% trans 'Partitions:' %}</label></td>
|
|
<td colspan="2">
|
|
<input name="partition_count" type="number" min="2"
|
|
value="{{ partition_details['partition_count'] ?: '' }}">
|
|
</td>
|
|
</tr>
|
|
{% if partition_details['can_have_subpartitions'] %}
|
|
<tr class="align-middle">
|
|
<td><label for="subpartition_by">{% trans 'Subpartition by:' %}</label></td>
|
|
<td>
|
|
<select name="subpartition_by" id="subpartition_by">
|
|
{% for option in sub_partition_options %}
|
|
<option value="{{ option }}"
|
|
{%- if partition_details['subpartition_by'] == option %}
|
|
selected="selected"
|
|
{%- endif %}>
|
|
{{ option }}
|
|
</option>
|
|
{% endfor %}
|
|
</select>
|
|
</td>
|
|
<td>
|
|
(<input name="subpartition_expr" type="text"
|
|
placeholder="{% trans 'Expression or column list' %}"
|
|
value="{{ partition_details['subpartition_expr'] }}">)
|
|
</td>
|
|
</tr>
|
|
<tr class="align-middle">
|
|
<td><label for="subpartition_count">{% trans 'Subpartitions:' %}</label></td>
|
|
<td colspan="2">
|
|
<input name="subpartition_count" type="number" min="2"
|
|
value="{{ partition_details['subpartition_count'] ?: '' }}">
|
|
</td>
|
|
</tr>
|
|
{% endif %}
|
|
</table>
|
|
{% if partition_details['partition_count'] > 1 %}
|
|
<table class="table align-middle" id="partition_definition_table">
|
|
<thead><tr>
|
|
<th>{% trans 'Partition' %}</th>
|
|
{% if partition_details['value_enabled'] %}
|
|
<th>{% trans 'Values' %}</th>
|
|
{% endif %}
|
|
{% if partition_details['can_have_subpartitions']
|
|
and partition_details['subpartition_count'] > 1 %}
|
|
<th>{% trans 'Subpartition' %}</th>
|
|
{% endif %}
|
|
<th>{% trans 'Engine' %}</th>
|
|
<th>{% trans 'Comment' %}</th>
|
|
<th>{% trans 'Data directory' %}</th>
|
|
<th>{% trans 'Index directory' %}</th>
|
|
<th>{% trans 'Max rows' %}</th>
|
|
<th>{% trans 'Min rows' %}</th>
|
|
<th>{% trans 'Table space' %}</th>
|
|
<th>{% trans 'Node group' %}</th>
|
|
</tr></thead>
|
|
{% for partition in partition_details['partitions'] %}
|
|
{% set rowspan = partition['subpartition_count'] is not empty
|
|
? partition['subpartition_count'] + 1 : 2 %}
|
|
<tr>
|
|
<td rowspan="{{ rowspan }}">
|
|
<input type="text" name="{{ partition['prefix'] }}[name]"
|
|
value="{{ partition['name'] }}">
|
|
</td>
|
|
{% if partition_details['value_enabled'] %}
|
|
<td rowspan="{{ rowspan }}" class="align-middle">
|
|
<select class="partition_value"
|
|
name="{{ partition['prefix'] }}[value_type]">
|
|
{% for option in value_type_options %}
|
|
<option value="{{ option }}"
|
|
{%- if partition['value_type'] == option %}
|
|
selected="selected"
|
|
{%- endif %}>
|
|
{{ option }}
|
|
</option>
|
|
{% endfor %}
|
|
</select>
|
|
<input type="text" class="partition_value"
|
|
name="{{ partition['prefix'] }}[value]"
|
|
value="{{ partition['value'] }}">
|
|
</td>
|
|
{% endif %}
|
|
</tr>
|
|
|
|
{% if partition['subpartitions'] is defined %}
|
|
{% set subpartitions = partition['subpartitions'] %}
|
|
{% else %}
|
|
{% set subpartitions = [partition] %}
|
|
{% endif %}
|
|
|
|
{% for subpartition in subpartitions %}
|
|
<tr>
|
|
{% if partition_details['can_have_subpartitions']
|
|
and partition_details['subpartition_count'] > 1 %}
|
|
<td>
|
|
<input type="text" name="{{ subpartition['prefix'] }}[name]"
|
|
value="{{ subpartition['name'] }}">
|
|
</td>
|
|
{% endif %}
|
|
<td>
|
|
<select name="{{ subpartition['prefix'] }}[engine]" aria-label="{% trans 'Storage engine' %}">
|
|
<option value=""></option>
|
|
{% for engine in storage_engines %}
|
|
<option value="{{ engine.name }}"{% if engine.comment is not empty %} title="{{ engine.comment }}"{% endif %}
|
|
{{- engine.name|lower == subpartition['engine']|lower ? ' selected' }}>
|
|
{{- engine.name -}}
|
|
</option>
|
|
{% endfor %}
|
|
</select>
|
|
</td>
|
|
<td>
|
|
<textarea name="{{ subpartition['prefix'] }}[comment]">
|
|
{{- subpartition['comment'] -}}
|
|
</textarea>
|
|
</td>
|
|
<td>
|
|
<input type="text" name="{{ subpartition['prefix'] }}[data_directory]"
|
|
value="{{ subpartition['data_directory'] }}">
|
|
</td>
|
|
<td>
|
|
<input type="text" name="{{ subpartition['prefix'] }}[index_directory]"
|
|
value="{{ subpartition['index_directory'] }}">
|
|
</td>
|
|
<td>
|
|
<input type="number" name="{{ subpartition['prefix'] }}[max_rows]"
|
|
value="{{ subpartition['max_rows'] }}">
|
|
</td>
|
|
<td>
|
|
<input type="number" min="0" name="{{ subpartition['prefix'] }}[min_rows]"
|
|
value="{{ subpartition['min_rows'] }}">
|
|
</td>
|
|
<td>
|
|
<input type="text" min="0" name="{{ subpartition['prefix'] }}[tablespace]"
|
|
value="{{ subpartition['tablespace'] }}">
|
|
</td>
|
|
<td>
|
|
<input type="text" name="{{ subpartition['prefix'] }}[node_group]"
|
|
value="{{ subpartition['node_group'] }}">
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
{% endfor %}
|
|
</table>
|
|
{% endif %}
|