# [26ai] Nuevas columnas %_TAB_PARTITIONS

En el artículo de hoy, vamos a ver una nueva mejora introducida en la vista ***%\_TAB_PARTITIONS***. Una mejora **muy** útil porque es una columna muy usada en el día a día aun siendo un campo de tipo **long**. Ya sabemos de las limitaciones de este campo y los quebraderos de cabeza que suele dar al manejar información en ese tipo de columnas.

Las dos nuevas columnas son *HIGH_VALUE_CLOB* y *HIGH_VALUE_JSON*, ambas columnas tiene la misma información que *HIGH_VALUE*.

```sql
SQL>
Select column_name, data_type  
  From dba_tab_cols 
 Where table_name = 'DBA_TAB_PARTITIONS' 
   And column_name like 'HIGH_VALUE%'

COLUMN_NAME             DATA_TYPE
--------------------    -------------------------------------
HIGH_VALUE_CLOB           CLOB
HIGH_VALUE_JSON           JSON
HIGH_VALUE                LONG
```

Creo que esto es un gran acierto, sobre todo el formato **json**. Cada vez más usado en los clientes el formato **json**, por las facilidades que da para manejar la información.

Para ver la información de estás nuevas columnas, vamos a definir una tabla particionado en nuestra base de datos.

```sql
SQL> 
Create table test_nuevas_columnas (
    id        INTEGER GENERATED BY DEFAULT AS IDENTITY,
    registro  Date,
    valor      varchar2(100 Char)
) 
partition by range (registro)
 interval ( numtoyminterval(1,'MONTH'))
  (
    PARTITION P01 VALUES LESS THAN ( to_date('01-01-2026','dd/mm/yyyy')),
    PARTITION P02 VALUES LESS THAN ( to_date('01-02-2026','dd/mm/yyyy')),
    PARTITION P03 VALUES LESS THAN ( to_date('01-03-2026','dd/mm/yyyy')),
    PARTITION P04 VALUES LESS THAN ( to_date('01-04-2026','dd/mm/yyyy')),
    PARTITION P05 VALUES LESS THAN ( to_date('01-05-2026','dd/mm/yyyy')),
    PARTITION P06 VALUES LESS THAN ( to_date('01-06-2026','dd/mm/yyyy')),
    PARTITION P07 VALUES LESS THAN ( to_date('01-07-2026','dd/mm/yyyy')),
    PARTITION P08 VALUES LESS THAN ( to_date('01-08-2026','dd/mm/yyyy')),
    PARTITION P09 VALUES LESS THAN ( to_date('01-09-2026','dd/mm/yyyy'))
  );
```

Procedemos a visualizar la información.

### High_Value

Visualización clásica para versiones anteriores a **26ai**.

```sql
SQL>
Select partition_name, high_value 
  From dba_tab_partitions 
 Where table_name = 'TEST_NUEVAS_COLUMNAS'


PARTIT_NAME  HIGH_VALUE_JSON
------------ --------------------------------------------------
P01          TO_DATE(' 2026-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P02          TO_DATE(' 2026-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P03          TO_DATE(' 2026-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P04          TO_DATE(' 2026-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P05          TO_DATE(' 2026-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P06          TO_DATE(' 2026-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P07          TO_DATE(' 2026-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P08          TO_DATE(' 2026-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P09          TO_DATE(' 2026-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
```

### High_Value_Json

Aquí podemos usar la función **JSON_SERIALIZE** o la función **JSON_VALUE**. Ambas funciones son válidas para revelar la definición de la partición.

```sql
SQL> 
Select partition_name, 
       Json_Value(high_value_json,'$.high_value') high_value_json 
  from dba_tab_partitions 
 Where table_name = 'TEST_NUEVAS_COLUMNAS';

PARTITION_NAME  HIGH_VALUE_JSON
--------------- --------------------------------------------------
P01             2026-01-01T00:00:00
P02             2026-02-01T00:00:00
P03             2026-03-01T00:00:00
P04             2026-04-01T00:00:00
P05             2026-05-01T00:00:00
P06             2026-06-01T00:00:00
P07             2026-07-01T00:00:00
P08             2026-08-01T00:00:00
P09             2026-09-01T00:00:00

SQL> 
Select partition_name, json_serialize(high_value_json) high_value_json 
  From dba_tab_partitions 
 Where table_name = 'TEST_NUEVAS_COLUMNAS';

PARTIT_NAME  HIGH_VALUE_JSON
------------ --------------------------------------------------
P01          {"high_value":"2026-01-01T00:00:00"}
P02          {"high_value":"2026-02-01T00:00:00"}
P03          {"high_value":"2026-03-01T00:00:00"}
P04          {"high_value":"2026-04-01T00:00:00"}
P05          {"high_value":"2026-05-01T00:00:00"}
P06          {"high_value":"2026-06-01T00:00:00"}
P07          {"high_value":"2026-07-01T00:00:00"}
P08          {"high_value":"2026-08-01T00:00:00"}
P09          {"high_value":"2026-09-01T00:00:00"}

```

Incluso podemos indicar el formato de salida que queremos mostrar.

```sql
SQL> 
Select
  partition_name, 
  Json_Value(high_value_json,'$.high_value' returning Date) high_value_json 
  From dba_tab_partitions where table_name = 'TEST_NUEVAS_COLUMNAS';

PARTITION_NA HIGH_VALUE_JSON
------------ -----------------------------------------
P01          01-01-2026 00:00:00
P02          02-01-2026 00:00:00
P03          03-01-2026 00:00:00
P04          04-01-2026 00:00:00
P05          05-01-2026 00:00:00
P06          06-01-2026 00:00:00
P07          07-01-2026 00:00:00
P08          08-01-2026 00:00:00
P09          09-01-2026 00:00:00


```

### High_Value_Clob

Visualización de la información en formato clob.

```sql
SQL> 
 Select partition_name, high_value_clob  
   From dba_tab_partitions where table_name = 'TEST_NUEVAS_COLUMNAS'


PARTITION_NA HIGH_VALUE_CLOB
------------ --------------------------------------------------------------
P01          TO_DATE(' 2026-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P02          TO_DATE(' 2026-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P03          TO_DATE(' 2026-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P04          TO_DATE(' 2026-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P05          TO_DATE(' 2026-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P06          TO_DATE(' 2026-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P07          TO_DATE(' 2026-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P08          TO_DATE(' 2026-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P09          TO_DATE(' 2026-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')

```

Espero que os guste. ¡Nos vemos en el próximo artículo!
