Esta página describe Calíope 1.5, la versión que estamos construyendo ahora mismo. La 1.4 está terminada y en revisión de App Store, y la tienda sirve hoy la 1.3 en el Mac y la 1.2 en iPad. El changelog dice en qué versión llegó cada función.

Añade un botón «Abrir en Calíope» a cada tema. Sólo funciona con la app instalada.

Editor SQL

Ejecutar una consulta SQL

Escribe y ejecuta SQL contra el servidor conectado.

Dónde está: Editor SQL › Ejecutar (⌘↩)

Escribe tu sentencia SQL en el editor de texto. Pulsa Ejecutar (ícono play) o usa el atajo ⌘↩ para ejecutar. Si hay texto seleccionado, solo se ejecuta la selección.

Los resultados aparecen en la tabla inferior con filas y columnas. El tiempo de ejecución y la cantidad de filas se muestran en la barra de estado.

Palabras clave: run, ejecutar, query, consulta, resultados

Detener una consulta en ejecución

Corta con KILL QUERY la sentencia que está tardando, sin cerrar la conexión.

Dónde está: Editor SQL › Detener

El botón Detener aparece en la barra del Editor SQL mientras hay una ejecución en curso, junto a Ejecutar. En macOS responde además al atajo ⌘. (Comando + punto).

Qué hace exactamente. MySQL y MariaDB no permiten abortar una consulta por la misma conexión que la está esperando, así que Calíope abre otra y manda KILL QUERY <id> contra la sesión que la ejecuta. Es la misma operación que ofrece la herramienta Procesos, apuntada automáticamente a tu propia consulta.

- Se usa KILL QUERY y no KILL CONNECTION: se aborta la sentencia y la conexión sigue viva, así que no hay que reconectar, ni se pierde la transacción abierta, ni desaparecen las tablas temporales de la sesión.
- En un script de varias sentencias se detiene la que está corriendo y las que quedan no se envían.
- No hacen falta privilegios especiales: cualquier usuario puede detener sus propias consultas.
- Al terminar, la barra de estado dice Consulta detenida. El error Query execution was interrupted que devuelve el servidor no se enseña como fallo: es la respuesta esperada.

Límites. El servidor decide cuándo puede atender la petición: un SELECT largo se corta casi en el acto, pero una operación que ya está dentro del motor de almacenamiento —un ALTER TABLE que está copiando la tabla, un rollback en marcha— puede tardar en soltar, o no soltarse. Si eso pasa, la sentencia sigue viva en el servidor aunque la app ya no la espere: la herramienta Procesos lo enseña.

Disponible en macOS, iPad e iPhone.

Palabras clave: detener, cancelar, matar, kill, kill query, abortar, interrumpir, consulta lenta, colgada, ⌘., stop

Limpiar editor y resultados

Borra el contenido del editor y la tabla de resultados.

Dónde está: Editor SQL › Limpiar

Pulsa el botón Limpiar en la barra de herramientas del Editor SQL para borrar tanto el texto del editor como los resultados mostrados. El historial de consultas no se ve afectado.

Palabras clave: clear, borrar, limpiar editor, vaciar

Formatear SQL (Beautify)

Aplica sangría y formato legible al SQL del editor.

Dónde está: Editor SQL › Beautify (⌘L)

El botón Beautify (o el atajo ⌘L) reformatea el SQL del editor con palabras clave en mayúsculas, sangría correcta y saltos de línea en cláusulas. Es útil para leer scripts compactos o generados automáticamente.

Palabras clave: format, formatear, beautify, pretty print, indentar

Comillas curvas que rompen una consulta

Por qué aparece el aviso «Corregir» bajo el editor y qué hace.

Dónde está: Espacio de Trabajo › Herramientas › Editor SQL

SQL sólo entiende comillas rectas: ' para los textos y " para los identificadores en algunos modos. Las comillas tipográficas —‘ ’ “ ” « » „ “— son caracteres distintos, y el servidor rechaza la sentencia con un error de sintaxis aunque en pantalla parezca correcta: en una tipografía monoespaciada ' y ‘ se distinguen muy poco.

Calíope no las escribe nunca. Aparecen al pegar SQL desde Notas, el correo o un chat, que sí sustituyen las comillas al escribir. Dentro de la app la sustitución está apagada en todos los editores, así que lo que teclees aquí siempre sale recto.

Cuando el editor detecta una de estas comillas en un sitio donde el SQL espera un delimitador, aparece un aviso con el botón «Corregir». Sólo cambia las que no pueden ser otra cosa: una comilla curva dentro de un texto es un carácter válido del dato —como en 'd’Artagnan'— y no se toca. Si no está claro cuál sobra, no se corrige nada y el aviso no aparece.

Palabras clave: comillas, comilla, tipográficas, curvas, rectas, apóstrofo, error de sintaxis, 1064, pegar, corregir

Modo seguro

Bloquea sentencias destructivas para evitar errores. Activo por defecto.

Dónde está: Editor SQL › Modo seguro

El Modo seguro está activado por defecto en macOS, iPad e iPhone. Cuando está activo, Calíope intercepta sentencias ALTER, DROP, DELETE, UPDATE y TRUNCATE y muestra una alerta de confirmación antes de ejecutarlas.

Usa el interruptor Modo seguro (ícono de candado) en la barra de herramientas del Editor SQL para activarlo o desactivarlo. El estado se persiste por perfil de conexión entre sesiones.

Útil para trabajar en producción o para usuarios que están aprendiendo SQL y quieren protección ante cambios accidentales.

Palabras clave: safe mode, seguro, bloquear, proteger, drop, delete, por defecto

Transacciones

Gestiona BEGIN, COMMIT y ROLLBACK desde el menú desplegable de transacciones.

Dónde está: Editor SQL › Menú Transacciones

El menú desplegable Transacciones en la barra de herramientas del Editor SQL agrupa las tres operaciones de control: BEGIN (inicia la transacción), COMMIT (confirma los cambios) y ROLLBACK (deshace los cambios).

COMMIT y ROLLBACK muestran un diálogo de confirmación antes de ejecutarse para evitar cambios accidentales. Mientras hay una transacción activa, la barra de resultados muestra la etiqueta Transacción activa en verde.

MySQL y MariaDB requieren que el motor de la tabla sea InnoDB para soporte completo de transacciones.

Palabras clave: transaccion, transaction, commit, rollback, begin, InnoDB, menú desplegable

Historial de consultas

Accede a las consultas ejecutadas anteriormente.

Dónde está: Editor SQL › Historial

El botón Historial (ícono de reloj) abre una hoja con las consultas ya ejecutadas: cada fila lleva una marca verde o roja según cómo terminara, el tiempo que tardó y cuándo fue. Puedes buscar entre ellas y cargar una en el editor con el botón Usar.

Se registra una entrada por ejecución, no por sentencia: si lanzas un lote de doce sentencias con Ejecutar Script, el historial guarda el texto completo como una sola entrada. Para verlo sentencia a sentencia está el botón Sentencias.

La hoja lista solo el historial de la pestaña activa, y Limpiar borra solo el de esa pestaña. Los botones / de al lado, en cambio, recorren el historial entero.

El historial se conserva entre sesiones por perfil de conexión (máximo 500 entradas por perfil), en la clave caliope_query_history_<id del perfil> de UserDefaults. Lo que no se conserva es el texto de una ejecución de más de 32 KB: esa entrada se ve mientras dura la sesión y no baja al disco, porque guardar la mitad dejaría en el historial un SQL cortado que se puede volver a ejecutar.

Palabras clave: historial, history, consultas anteriores, recientes

Visual EXPLAIN

Visualiza el plan de ejecución de una consulta SELECT.

Dónde está: Editor SQL › Visual EXPLAIN

Con una sentencia SELECT en el editor, pulsa el botón Visual EXPLAIN. Calíope ejecuta EXPLAIN FORMAT=JSON (sintaxis MySQL/MariaDB) y abre el resultado en la pestaña Visual EXPLAIN, que muestra el árbol de nodos del plan con colores por tipo de acceso.

Palabras clave: explain, plan, optimizador, índice, full scan

Delimitador de sentencias

Elige el carácter que separa múltiples sentencias antes de ejecutarlas.

Dónde está: Editor SQL › Selector Delim

El selector Delim en la barra de resultados controla cómo Calíope divide el texto del editor en sentencias individuales antes de ejecutarlas. Hay tres opciones predefinidas:

- ; (punto y coma) — separador estándar de MySQL. Adecuado para la mayoría de consultas.
- | (pipe) — alternativa útil cuando el SQL contiene punto y coma dentro de cadenas literales.
- $$ — convención habitual para escribir procedimientos almacenados, funciones y triggers, cuyo cuerpo contiene ; internamente. Con este delimitador puedes escribir bloques CREATE PROCEDURE … BEGIN … END$$ y Calíope ejecutará cada bloque como una única sentencia.

En macOS también puedes introducir un delimitador personalizado en el campo de texto que aparece junto a los botones preestablecidos.

El delimitador activo también se usa como separador de campos al exportar resultados en formato CSV.

El panel Sentencias trocea por este mismo delimitador, así que su lista coincide con lo que se va a ejecutar. Si lo dejas vacío, tanto la lista como la ejecución recaen en ;.

Palabras clave: delimitador, delimiter, $$, pipe, punto y coma, procedimiento almacenado, split, separador, CSV

Exportar resultados a archivo

Guarda los resultados de la consulta en varios formatos.

Dónde está: Editor SQL › Guardar resultado

Pulsa el botón Guardar resultado (ícono de floppy) en la barra de resultados. Elige el formato de salida — Tabla (texto), JSON, CSV, HTML o XML — y selecciona dónde guardar el archivo con el diálogo de guardado del sistema.

El nombre de archivo se pre-rellena con la fecha y hora de exportación.

Palabras clave: exportar, guardar, csv, json, html, xml, archivo

Exportar tabla como INSERT

Genera sentencias INSERT para la tabla o el resultado actual.

Dónde está: Editor SQL › Menú INSERT

El menú desplegable INSERT en la barra de herramientas ofrece dos opciones: Exportar resultado como INSERT (convierte las filas del resultado actual) y Exportar tabla como INSERT (seleccionas la tabla desde un diálogo y exporta todos sus datos).

El resultado se agrega al editor SQL como texto listo para copiar o ejecutar.

Palabras clave: insert, exportar datos, volcado, dump, seed

Formatos de salida

Cambia cómo se presentan los resultados de la consulta.

Dónde está: Editor SQL › Selector de formato

El selector Formato en la barra de resultados permite elegir entre: Tabla (vista de cuadrícula interactiva), JSON (resultado como array de objetos), CSV (separado por el delimitador activo en Delim), Texto (columnas alineadas), HTML (tabla HTML) y XML (etiquetas por campo).

El formato seleccionado también se usa al exportar el resultado a un archivo.

Palabras clave: formato, tabla, json, csv, html, xml, output

Concatenar resultados

Acumula los resultados de múltiples ejecuciones sin borrar los anteriores.

Dónde está: Editor SQL › Concatenar

Activa el interruptor Concatenar en la barra de resultados. Con esta opción activa, cada ejecución agrega sus filas a las ya mostradas en lugar de reemplazarlas. Útil para combinar resultados de consultas similares sobre diferentes condiciones.

Palabras clave: concatenar, acumular, combinar, append, resultados múltiples

Repetición automática (polling)

Ejecuta la consulta automáticamente cada N segundos.

Dónde está: Editor SQL › Repetir

Activa el interruptor Repetir e introduce el intervalo en segundos. Calíope ejecutará la consulta automáticamente en bucle con ese intervalo. Útil para monitorear el resultado de consultas de estado o conteo en tiempo real.

Desactiva el interruptor para detener la repetición.

Palabras clave: polling, repetir, auto-refresh, intervalo, monitorear

Vincular BD — conectar una segunda base de datos

Ejecuta cada consulta simultáneamente en dos servidores y compara los resultados.

Dónde está: Editor SQL › Vincular BD

El botón Vincular BD (ícono de eslabón con +) en la barra de herramientas del Editor SQL conecta un segundo servidor MySQL/MariaDB a la pestaña activa.

Cómo vincular:
1. Pulsa Vincular BD. Aparece un selector con tus perfiles de conexión recientes.
2. Elige el perfil del segundo servidor y pulsa Conectar.
3. Cuando la conexión se establece, el botón se reemplaza por un badge verde con el nombre del perfil y un botón .

Qué ocurre al ejecutar con BD vinculada:
Cada vez que pulses Ejecutar o Ejecutar script, Calíope lanza la misma consulta en ambos servidores en paralelo (sin bloqueo entre ellos). En lugar de la tabla de resultados habitual, aparece la vista de comparación (ver tema: Comparar resultados entre dos servidores).

Desconectar la BD vinculada:
Pulsa el botón del badge verde. La conexión secundaria se cierra, la vista de comparación desaparece y el editor vuelve al modo normal con los resultados del servidor principal.

Disponible en macOS, iPad e iPhone.

Palabras clave: vincular, link db, segundo servidor, conexión secundaria, paralelo, comparar, dos servidores

Comparar resultados entre dos servidores

Vista de comparación lado a lado con resaltado de diferencias por celda.

Dónde está: Editor SQL › Vincular BD

Cuando hay una BD vinculada (ver Vincular BD), cada ejecución muestra la vista de comparación en lugar de la tabla normal.

Barra de resumen (parte superior):
- Indicador azul — nombre del servidor principal, número de filas y tiempo de ejecución.
- Indicador naranja — nombre del servidor secundario, número de filas y tiempo.
- Badge de resultado:
- ✓ Idénticos (verde) — ambos resultados son exactamente iguales.
- ⚠ N valor(es) · M fila(s) extra (naranja) — hay diferencias.
- Toggle "Solo diffs" — oculta las filas idénticas para centrarte solo en las diferencias. Desactivado cuando los resultados son idénticos.

Cómo leer la tabla de comparación:
La tabla añade una columna DB a la izquierda de las columnas de datos:

IndicadorSignificado
=Fila idéntica en ambos servidores (una sola fila)
PFila del servidor principal que difiere del secundario
SFila del servidor secundario que difiere del principal

Cuando una fila difiere, se muestran dos filas consecutivas (P y S). Las celdas exactas donde hay diferencia se resaltan:
- Rojo suave → valor en el servidor principal que cambió.
- Verde suave → valor en el servidor secundario que cambió.

Las filas que solo existen en un servidor (diferencia de conteo) aparecen con fondo azul (solo en principal) o naranja (solo en secundario).

Estados especiales:
- Error en uno o ambos servidores — se muestra el mensaje de error de cada servidor por separado.
- Consulta DML (sin columnas) — muestra las filas afectadas de cada servidor y si coinciden.
- Columnas no coincidentes — muestra la lista de columnas de cada servidor con las columnas extra resaltadas en naranja.

Disponible en macOS, iPad e iPhone.

Palabras clave: comparar, diferencias, diffs, dos servidores, paralelo, resaltado, idéntico, compara resultados, solo diffs, badge, P S, fila extra

Insertar snippet en el editor

Inserta fragmentos de código guardados directamente en el editor.

Dónde está: Editor SQL › Fragmentos

Pulsa el botón Fragmentos (ícono de estrella) en la barra de herramientas del Editor SQL. Se abre una hoja con la lista de tus fragmentos guardados: selecciona uno y pulsa Insertar para agregarlo al cursor actual del editor.

Palabras clave: snippet, fragmento, plantilla, insertar, código

Ver valor completo de una celda

Visualiza el contenido completo de celdas con texto largo sin expandir la fila.

Dónde está: Editor SQL › clic derecho › Ver valor completo

Las celdas de la tabla de resultados muestran el texto truncado en una sola línea para mantener las filas compactas. Para leer el valor completo sin necesidad de redimensionar columnas:

macOS: Haz clic en cualquier celda. Aparece un popover anclado a la celda con el valor completo, seleccionable y con un botón Copiar en la parte inferior. El popover es desplazable si el contenido es muy largo.

iPad: Toca cualquier celda. Se abre una hoja con el valor completo, seleccionable para copiar parcialmente. La hoja también tiene un botón Copiar en la barra superior para copiar todo el contenido.

En las tres el popover o hoja muestra el nombre de la columna en el encabezado, y para valores largos (más de 50 caracteres) indica el número total de caracteres.

Las celdas con valor NULL no abren el visor al pulsar sobre ellas.

Palabras clave: celda, valor completo, texto largo, popover, hoja, clic, tap, truncado, leer

Editar celda avanzada

Edita valores de celdas con editor dedicado para texto largo, JSON y binario.

Dónde está: Editor SQL › clic derecho › Editar valor avanzado…

Haz clic derecho (macOS) o mantén pulsada (iPad) cualquier celda del resultado y elige Editar valor avanzado… para abrirla en el Editor avanzado de celdas. El editor tiene pestañas para: texto plano, JSON (con botón de formateo), y datos binarios/hex.

Usa el botón OK para copiar el valor editado al portapapeles, o Cargar en editor si la celda contiene SQL.

Palabras clave: celda, editar, json, blob, texto largo, menú contextual

Generar UPDATE desde celda

Edita el valor de una celda y previsualiza el UPDATE antes de ejecutarlo.

Dónde está: Editor SQL › clic derecho › Generar UPDATE…

Calíope puede generar y ejecutar un UPDATE directamente desde cualquier celda del resultado.

macOS: Haz doble clic en una celda, o usa el clic derecho › Generar UPDATE…
iPad: Haz doble tap en una celda, o mantén pulsada la celda y elige Generar UPDATE… en el menú contextual.

Se abre un panel con los siguientes campos:

- Nuevo valor — escribe el valor de reemplazo. Activa el toggle NULL para asignar NULL.
- Tabla — detectada automáticamente del FROM de tu consulta. Edítala si es necesario (aparece ⚠ si no se detectó).
- Columna WHERE — la columna que actúa como clave primaria en la cláusula WHERE. Calíope prioriza columnas llamadas id, luego las que terminan en _id, y finalmente la primera columna.
- Valor WHERE — muestra el valor actual de esa columna en la fila. Si es NULL, se muestra una advertencia en naranja porque el WHERE afectará todas las filas con esa condición.

El SQL generado es editable — puedes modificarlo antes de ejecutar.

Pulsa Ejecutar UPDATE (macOS) o Ejecutar (iPad) para correr la sentencia. Al tener éxito, el resultado muestra las filas afectadas y el tiempo, y la consulta original se re-ejecuta automáticamente.

Palabras clave: update, editar celda, inline edit, generar sql, previsualizar, where, pk, clave primaria, modificar fila

Eliminar fila desde resultados

Genera y ejecuta un DELETE para la fila seleccionada con previsualización y edición del SQL.

Dónde está: Editor SQL › clic derecho › Eliminar fila…

Calíope puede generar un DELETE para cualquier fila visible en la tabla de resultados.

macOS: Haz clic derecho sobre cualquier celda de la fila y elige Eliminar fila…
iPad: Mantén pulsada cualquier celda de la fila y elige Eliminar fila… en el menú contextual.

Se abre un panel con los siguientes campos:

- Tabla — detectada automáticamente del FROM de tu consulta. Si el nombre es incorrecto (por ejemplo, si usas JOINs o alias), escríbelo manualmente con el formato base_de_datos.tabla.
- Cláusula WHERE — elige la columna que actúa como clave primaria. Calíope prioriza columnas llamadas id, luego las que terminan en _id. Elige "Usar todas las columnas" si prefieres identificar la fila por todos sus valores.
- SQL generado — previsualización editable del DELETE. Usa el botón Copiar SQL para copiarlo al portapapeles sin ejecutarlo.

DELETE FROM `mi_base`.`usuarios`
  WHERE `id` = '42';

Pulsa Eliminar fila para ejecutar. La consulta original se re-ejecuta automáticamente para refrescar la tabla. Si ocurre un error, el panel permanece abierto y muestra el mensaje de error del servidor.

> Atención: El Modo seguro no intercepta este DELETE porque se ejecuta internamente, no desde el editor. Verifica siempre el WHERE antes de confirmar.

Palabras clave: delete, eliminar fila, borrar fila, delete row, menú contextual, resultados, tabla, where, copiar sql, corregir tabla

Ayuda contextual de funciones SQL

Consulta la documentación de funciones del motor al que estás conectado sin salir del editor.

Dónde está: Editor SQL › Editor de texto

Calíope muestra documentación integrada para las funciones SQL del motor de la sesión: con MySQL, MariaDB y Aurora, las de esa familia (SUM, DATE_FORMAT, JSON_EXTRACT, COALESCE, etc.); con PostgreSQL, las suyas (string_agg, to_char, jsonb_set, date_trunc, etc.). Un nombre que existe en los dos no comparte ficha, porque no siempre significa lo mismo: LENGTH cuenta caracteres en PostgreSQL y bytes en MySQL. Si al pasar por encima de una función no aparece nada, es que esa función no existe en el motor al que estás conectado.

macOS: Pasa el cursor sobre el nombre de cualquier función reconocida en el editor. Tras una pausa breve aparece un popover con la sintaxis, tipo de retorno, descripción, parámetros con sus tipos y un ejemplo de uso.

iPad: Cuando el cursor está posicionado dentro o justo después del nombre de una función reconocida, aparece automáticamente una barra de contexto bajo la barra de herramientas del editor que muestra el nombre y la sintaxis. Pulsa el botón ? en la barra para abrir la documentación completa en una hoja.

La documentación incluye:
- Sintaxis completa de la función
- Tipo de retorno
- Descripción del comportamiento
- Parámetros con nombre, tipo y si son opcionales
- Ejemplo de uso cuando está disponible

Palabras clave: función, ayuda, documentación, sum, count, date_format, json_extract, popover, autocomplete, mysql, mariadb, postgresql, to_char, string_agg

Gestor de sentencias SQL

Analiza el script del editor y gestiona sus sentencias individualmente.

Dónde está: Editor SQL › Sentencias SQL

El botón Sentencias (ícono de lista) abre el Gestor de Sentencias SQL, que divide el contenido del editor por punto y coma y muestra cada sentencia numerada, con su tipo (SELECT, INSERT, UPDATE, etc.) y un ícono de color. Desde el gestor puedes copiar sentencias individuales, cargarlas en el editor, quitarlas de la lista o buscar entre ellas.

Es una vista del texto que tienes ahora mismo en el editor y no ejecuta nada: se recalcula cada vez que abres la hoja, y Eliminar de la lista quita la fila de la lista, nunca del editor. Ahí está la diferencia con el Historial, que registra lo que ya se ejecutó, con una entrada por ejecución.

El gestor trocea por el delimitador activo de la barra de resultados, el mismo que usa la ejecución: con ; parte por punto y coma, y si has puesto $$ para escribir un CREATE PROCEDURE, el bloque entero se lista como una sola sentencia. Así lo que enumera coincide con lo que se va a ejecutar.

Palabras clave: sentencias, statements, split, gestionar, lista de queries

Ejecutar script completo

Ejecuta todas las sentencias del editor de una sola vez con ⌘⇧↩.

Dónde está: Editor SQL › Ejecutar script (⌘⇧↩)

Usa el atajo ⌘⇧↩ o el botón Ejecutar script (ícono de doble rayo) en la barra de herramientas del Editor SQL para ejecutar todas las sentencias del editor secuencialmente, independientemente de si hay texto seleccionado.

macOS: el botón aparece junto al botón Ejecutar principal en la barra de herramientas.
iPad: disponible en la barra de herramientas superior del editor.

A diferencia de Ejecutar (⌘↩), que corre solo la selección activa o la sentencia bajo el cursor, Ejecutar script procesa todas las sentencias separadas por el delimitador activo en orden y acumula los resultados.

Palabras clave: ejecutar script, run all, ⌘⇧Return, todas las sentencias, script completo, múltiples queries

La rejilla de resultados

Los resultados van en páginas: 50 filas en el Mac, 200 en iPad e iPhone.

Dónde está: Editor SQL › Rejilla de resultados

En macOS los resultados van en páginas de 50 filas, con su barra abajo —botón anterior, botón siguiente e indicador de página—, que sólo aparece cuando la consulta devolvió más de 50. Puedes ordenar pulsando una cabecera, elegir varias filas con ⇧ o ⌘, copiarlas con ⌘C —salen en TSV, con los nombres de las columnas delante— y arrastrarlas fuera de la app.

El orden es del cliente, y alcanza al resultado entero. Ordena las filas que ya se trajeron —todas, no sólo la página que tienes delante— y después se reparten en páginas. No ordena la tabla del servidor, y la propia rejilla lo dice debajo mientras haya un orden puesto. Si quieres las diez primeras de verdad, el orden va en la consulta: ORDER BY … LIMIT 10.

La selección es de la página. Al cambiar de página se vacía, para que ⌘C y el arrastre no se lleven filas que ya no están delante.

En iPad y en iPhone las páginas son de 200 filas, con la misma barra abajo.

En las tres, la división es local: la consulta se ejecuta entera y se reparte en memoria. Si necesitas exactamente un rango de filas, añade LIMIT y OFFSET a la consulta.

Palabras clave: rejilla, resultados, ordenar, cabecera, seleccionar filas, copiar, TSV, paginación, páginas, 50 filas, 200 filas, LIMIT, OFFSET

Buscar y reemplazar en el editor

Busca y reemplaza texto en el editor SQL con el buscador nativo del sistema.

Dónde está: Editor SQL › Buscar (⌘F)

Pulsa el botón Buscar (ícono de lupa) en la barra de herramientas del Editor SQL o usa el atajo ⌘F (macOS) para abrir el buscador integrado.

macOS: Se activa el buscador nativo de NSTextFinder con campo de búsqueda y reemplazo, navegación entre coincidencias con / ⇧↩, opción de reemplazar una o todas las coincidencias.

iPad: Se activa UIFindInteraction del sistema, que presenta la barra de búsqueda/reemplazo nativa de iOS sobre el teclado, con soporte para navegación táctil entre coincidencias.

Palabras clave: buscar, reemplazar, find, replace, search, texto, ⌘F

Navegar historial desde el editor (estilo REPL)

Recupera consultas anteriores directamente desde el editor sin abrir el panel de historial.

Dónde está: Editor SQL › Flechas ‹ › de historial

El editor SQL permite recuperar consultas anteriores directamente desde el campo de texto, igual que en la terminal mysql.

macOS:
- Pulsa con el cursor al principio del editor (posición 0, sin nada seleccionado) para cargar la consulta anterior del historial.
- Pulsa con el cursor en la última línea para volver hacia el presente.
- También puedes usar los botones / de la barra de herramientas del editor.

iPad:
- Usa los botones / , o ⌘↑ / ⌘↓ con teclado físico.

Nada se pierde al navegar. Al entrar en el historial se guarda lo que había en el editor, y al volver con se restaura tal cual — no queda en blanco. Y si lo que hay es un borrador propio a medio escribir, ni las teclas ni los botones lo tocan: y mueven el cursor como siempre.

Teclas y botones comparten un mismo recorrido, así que deshace exactamente lo que hizo . Lo que recorren es el historial de la pestaña activa, el mismo que lista la hoja del botón Historial. Navegar el historial no lo modifica.

Palabras clave: historial, REPL, flecha, navegar, arriba, abajo, anterior, siguiente, chevron

Fijar resultados para comparar

Guarda el resultado actual para consultarlo mientras ejecutas otras queries.

Dónde está: Editor SQL › Fijar resultado

El botón Fijar (ícono de pin) en la barra de resultados guarda una copia del resultado actual junto con el SQL que lo generó y la hora de ejecución. El resultado fijado persiste aunque se ejecuten otras consultas.

Cuando hay resultados fijados, aparece el botón Fijados (N) que alterna la visibilidad del panel de resultados fijados. Cada resultado fijado muestra:
- El SQL resumido que lo generó
- El número de filas y columnas
- La hora de ejecución
- Un botón para desfijar ese resultado individualmente

Disponible en macOS, iPad e iPhone. Útil para comparar el estado de una tabla antes y después de un cambio.

Palabras clave: fijar, pin, resultados, comparar, múltiples, guardar resultado, antes y después

Terminal SQL integrada (modo REPL)

Panel tipo terminal con prompt mysql> para ejecutar SQL de forma interactiva.

Dónde está: Editor SQL › Terminal

El botón Terminal (ícono de terminal) en la barra de herramientas del Editor SQL abre un panel inferior estilo REPL.

Cómo usarla:
- Escribe SQL en el campo con prompt mysql> y presiona (o el botón ↵) para ejecutar.
- Los resultados SELECT se muestran como tabla ASCII con separadores +---+.
- Las sentencias DML muestran "Query OK, N fila(s) afectada(s)".
- Los errores se muestran en rojo con el mensaje de MySQL.

Navegar el historial de la terminal:
- macOS: Usa / en el campo de input para recorrer las consultas anteriores de la terminal.
- iPad: Usa los botones / sobre el campo de input.

Limpiar: El botón de papelera en el header borra el output de la terminal.

La terminal tiene su propio historial independiente del Editor SQL principal. Las consultas ejecutadas desde la terminal también se añaden al historial global de la sesión.

Disponible en macOS, iPad e iPhone.

Palabras clave: terminal, REPL, prompt, mysql, interactivo, consola, ascii, tabla

Exportar resultados en múltiples formatos

Guarda los resultados en JSON, Markdown, XML o Excel (.xlsx) además de CSV.

Dónde está: Editor SQL › Selector de formato

Además de los formatos clásicos (Tabla, CSV, HTML), el selector Formato en la barra de resultados incluye:

- JSON — array de objetos, ideal para APIs y herramientas de desarrollo.
- Markdown — tabla en formato Markdown, lista para pegar en documentación o Notion.
- XML — elemento por fila, compatible con herramientas de procesamiento de datos.
- Excel (.xlsx) — hoja de cálculo lista para abrir en Numbers o Excel. Usa el botón Guardar que aparece en la barra de resultados al seleccionar este formato.

El botón Guardar / Compartir en la barra de resultados exporta con el formato activo seleccionado en el picker.

Disponible en macOS, iPad e iPhone.

Palabras clave: exportar, json, markdown, xml, excel, xlsx, formato, guardar resultado, numbers

Expandir SELECT * en columnas explícitas

Reemplaza el asterisco de un SELECT con los nombres reales de las columnas de la tabla.

Dónde está: Editor SQL › clic derecho › Expandir * → columnas

Cuando tienes un SELECT * FROM tabla en el editor, Calíope puede expandir ese * a la lista explícita de columnas de la tabla directamente en el editor.

Cómo usarlo (macOS):
1. Posiciona el cursor dentro de la sentencia SELECT que contiene el *.
2. Haz clic derecho en el editor para abrir el menú contextual.
3. Selecciona Expandir * → columnas de nombre_tabla.

Calíope consulta el servidor para obtener las columnas actuales de la tabla y reemplaza el * con la lista de columnas entre backticks separadas por comas, por ejemplo:

SELECT `id`, `nombre`, `email`, `created_at` FROM `usuarios`

Requisitos:
- Debe haber una base de datos activa seleccionada en el selector de la barra de herramientas.
- La opción solo aparece en el menú contextual cuando el cursor está dentro de una sentencia SELECT … FROM tabla válida.
- La tabla debe existir en la base de datos activa y el usuario debe tener permisos de lectura.

Disponible solo en macOS. En el iPad y en el iPhone la expansión no está disponible en esta versión.

Palabras clave: expandir, asterisco, SELECT *, columnas, explicitar, expand, reemplazar, backtick

Autocompletado en el editor SQL

Completa palabras clave SQL, nombres de tablas y columnas. El popup automático al escribir requiere activar una opción en Preferencias.

Dónde está: Calíope › Preferencias › Editor de texto

El editor SQL ofrece dos capas de autocompletado independientes.

1. Palabras clave SQL:
El editor conoce todas las palabras clave de MySQL/MariaDB (SELECT, FROM, WHERE, JOIN, GROUP BY, etc.) y las incluye en el popup de sugerencias. Activa o desactiva esta capa en Preferencias › Editor de texto › Autocompletar palabras clave SQL.

2. Nombres de tablas y columnas del esquema:
Calíope carga los objetos de la base de datos activa (tablas, columnas, alias) y los añade a las sugerencias. No hace falta escribir el principio del nombre: vale cualquier parte, y los que empiezan por lo que escribiste salen los primeros.

---

Cómo se abre el popup:

- Manualmente: ⌘N en macOS, y en el iPad el botón Autocompletar de la barra del editor —o ⌘N, si tienes teclado físico—. Abre el popup en cualquier momento, sin importar qué hayas escrito. El botón está mientras el autocompletado esté activado en Preferencias, que es lo mismo que gobierna el atajo.

- Automáticamente al escribir: el popup puede aparecer solo después de que dejes de teclear durante un breve instante. Esta función está desactivada por defecto. Para activarla ve a Preferencias › Editor de texto y activa el interruptor "Autocompletado en tiempo real". Una vez activo, el popup aparece aproximadamente 350 ms después de la última pulsación de tecla.

Si escribes SEL, haces una pausa y no aparece nada, es porque el autocompletado en tiempo real no está activado. Usa ⌘N —o el botón de la barra, en el iPad— para abrirlo manualmente, o activa la opción en Preferencias.

---

Popup de objetos al escribir punto:
Si escribes el nombre de una base de datos entre backticks seguido de un punto (p. ej. `mi_bd`. ), el editor muestra automáticamente las tablas de esa base para seleccionar directamente. Si sigues escribiendo, la lista se va acortando y deja sólo los nombres que contienen lo escrito.

Disponible en macOS, iPad e iPhone. En el iPad y en el iPhone no hace falta teclado: el botón de la barra abre el popup igual que ⌘N.

Palabras clave: autocompletado, autocomplete, sugerencias, keywords, tablas, columnas, popup, completar, ⌘N, tiempo real, live, debounce, automático

Plegar y desplegar bloques en el editor

Colapsa o expande bloques de paréntesis y bloques BEGIN…END para simplificar la lectura de scripts complejos.

Dónde está: Atajo de teclado: ⌃. / ⌃, — clic en el margen izquierdo

El editor SQL de Calíope permite plegar (colapsar) dos tipos de bloques:

1. Bloques de paréntesis (…)
Útil para subconsultas largas, cláusulas IN (…) o listas de columnas en CREATE TABLE. El triángulo ▼ aparece en el margen izquierdo en cualquier línea que contenga un ( con saltos de línea interiores.

2. Bloques BEGIN…END
Los cuerpos de procedimientos almacenados, funciones, triggers y eventos MariaDB/MySQL usan BEGIN…END. El triángulo ▼ aparece en el margen izquierdo sobre la línea que contiene BEGIN. Al plegar, el bloque queda como BEGIN(…)END, dejando visible la firma del objeto (CREATE PROCEDURE …, CREATE FUNCTION …, etc.).

Bloques soportados:
- CREATE PROCEDURE name() BEGIN … END
- CREATE FUNCTION name() RETURNS type BEGIN … END
- CREATE TRIGGER name … BEGIN … END
- CREATE EVENT name … DO BEGIN … END
- Bloques BEGIN … END sueltos (inicio de transacción)

Los bloques END IF, END LOOP, END CASE, END WHILE y similares no cierran un BEGIN de rutina y se ignoran correctamente.

Cómo plegar/desplegar:
- Con el ratón / toque: Haz clic (macOS) o toca (iPad) el triángulo ▼ en el margen izquierdo de la línea.
- Con teclado (macOS):
- ⌃. (Control + punto) — Pliega el bloque (paréntesis o BEGIN…END) que contiene el cursor.
- ⌃, (Control + coma) — Despliega el bloque plegado en la posición del cursor.

Comportamiento:
- El plegado es solo visual: el texto completo permanece en el editor y se envía íntegro al servidor al ejecutar.
- Los folds se conservan mientras la pestaña permanece abierta.

Disponible en macOS, iPad e iPhone.

Palabras clave: plegar, desplegar, paréntesis, fold, colapsar, subconsulta, anidado, ⌃., ⌃, BEGIN, END, procedimiento, función almacenada, trigger, rutina, begin end, fold block

Monitor de rendimiento (CPU y memoria)

Indicador en el sidebar que muestra CPU y RAM de la app, con sugerencias de limpieza cuando el uso es elevado.

Dónde está: Panel lateral › Monitor de rendimiento (parte inferior del sidebar)

El monitor de rendimiento aparece en la parte inferior del sidebar izquierdo del workspace (debajo del árbol de esquemas). Muestra el uso actual de CPU y RAM de la app Calíope.

Colores del indicador:
- 🟢 Verde — Rendimiento normal (CPU < 30 %, RAM < 5 % de la RAM total del sistema)
- 🟡 Ámbar — Uso elevado (CPU 30–70 % o RAM 5–10 % de la RAM total)
- 🔴 Rojo — Presión alta (CPU > 70 % o RAM > 10 % de la RAM total; en iPad también se activa por una alerta del sistema operativo)

Qué significa "Limpiar resultados": descarta el array de filas del resultado actual de esa pestaña del Editor SQL, liberando la memoria que ocupan. La query escrita en el editor no se borra; puedes volver a ejecutarla en cualquier momento.

Cuándo actuar: si el badge del indicador aparece en rojo, la app puede responder más lento. Pulsa o toca el indicador para ver el panel de detalle — las sugerencias muestran exactamente qué pestaña está ocupando más memoria y ofrecen un botón de acción directo.

Disponible en macOS, iPad e iPhone.

Palabras clave: rendimiento, memoria, cpu, ram, lento, limpiar resultados, performance, monitor, presión, uso elevado

Alternar comentario SQL (⌘D)

Comenta o descomenta las líneas seleccionadas con el prefijo '--'.

Dónde está: Editor SQL › Comentar

Pulsa ⌘D (o el botón Comentar en la barra de herramientas) para alternar el comentario SQL en las líneas seleccionadas.

Comportamiento:
- Si hay texto seleccionado, actúa sobre todas las líneas que abarca la selección.
- Sin selección, actúa sobre la línea donde está el cursor.
- Si todas las líneas no vacías ya empiezan con --, las descomenta; de lo contrario, añade -- al inicio de cada línea.

Atajos:
- macOS: ⌘D en el editor o botón en la barra de herramientas
- iPad: ⌘D con Magic Keyboard o botón en la barra de herramientas

La operación es deshacer-able en macOS con ⌘Z.

Palabras clave: comentar, comment, toggle comment, descomentad, --, sql comment, cmd d, líneas, comentario

Linting — diagnóstico de errores antes de ejecutar

Subraya errores léxicos en el editor mientras escribes, sin ejecutar nada contra la base de datos.

Dónde está: Editor SQL › Barra de resultados

El linting pre-ejecución analiza el texto del editor automáticamente (500 ms después de que dejas de escribir) y subraya con una línea discontinua roja los errores léxicos que MySQL/MariaDB rechazaría definitivamente.

Errores detectados:

ErrorEjemplo
Cadena literal sin cerrarWHERE nombre = 'juan
Identificador con backtick sin cerrarSELECT `columna
Comentario de bloque sin cerrar/* sin cierre
Paréntesis de apertura sin cierreSIN(x + 1
Paréntesis de cierre sin aperturaSIN x + 1)

Cómo leerlo:
- El carácter problemático queda subrayado con línea discontinua roja.
- En la barra de resultados aparece un badge rojo con el número de errores (p. ej. ⚠ 2 error(es)). Al pasar el puntero sobre el badge se ven todos los mensajes.
- Si no hay errores el badge desaparece.

Limitaciones:
El linter es puramente léxico; no valida que los nombres de tablas o columnas existan en el servidor, ni comprueba la semántica de las cláusulas SQL. Su propósito es atrapar los errores más evidentes — cadenas sin cerrar, paréntesis desbalanceados — que suelen ser difíciles de ver en scripts largos.

Disponible en macOS, iPad e iPhone.

Palabras clave: lint, linting, error, diagnóstico, subrayar, antes de ejecutar, paréntesis, cadena, backtick, comentario, pre-ejecución

Ajuste de línea automático (word wrap)

Controla si las líneas largas se envuelven visualmente o permiten scroll horizontal.

Dónde está: Editor SQL › Preferencias → Editor

El ajuste de línea automático (word wrap) determina cómo se muestran las líneas del editor cuando su longitud supera el ancho visible.

Activado (por defecto): las líneas largas se doblan en la siguiente línea visual sin insertar ningún carácter en el texto. Es más cómodo para leer consultas complejas sin desplazamiento horizontal.

Desactivado: cada línea ocupa exactamente una fila. Aparece una barra de desplazamiento horizontal al pie del editor que permite ver toda la línea sin interrupción. Útil para scripts con alineación tabular (SELECT column1, column2, ...) o para revisar código generado automáticamente con líneas muy largas.

Cómo cambiarlo:
- macOS: menú Calíope → Preferencias → Editor → Ajuste de línea automático.
- iPad: Ajustes de la app → misma opción.

El ajuste se comparte entre macOS, iPad e iPhone mediante la clave caliope_pref_word_wrap en UserDefaults.

Palabras clave: word wrap, ajuste de línea, wrap, scroll horizontal, líneas largas, preferencias, configuración, no wrap

Resaltado de pares de brackets

Ilumina el bracket o keyword de cierre/apertura correspondiente al cursor.

Dónde está: Editor SQL › Editor de texto

Cuando el cursor está junto a un bracket o a las palabras clave BEGIN/END, el editor resalta automáticamente el carácter o keyword que lo empareja.

Tipos de pares soportados:

AbreCierraEjemplo SQL
()subconsultas, llamadas a función
{}JSON inline
[]nombres con espacios [mi tabla]
BEGINENDprocedimientos, funciones, triggers, eventos

Código de color:
- Amarillo — ambos extremos se encontraron correctamente.
- Rojo — el bracket o keyword no tiene pareja (desequilibrio).

Comportamiento:
- El resaltado se actualiza en tiempo real al mover el cursor o modificar el texto.
- END IF, END LOOP, END CASE, END WHILE, END REPEAT y END FOR son ignorados correctamente: solo se emparejan los END que cierran un bloque BEGIN de rutina.
- Los bloques BEGIN/END anidados se resuelven con conteo de profundidad (el END correcto se identifica incluso con múltiples niveles de anidamiento).

Disponible en macOS, iPad e iPhone.

Palabras clave: bracket, paréntesis, matching, pareja, resaltar, BEGIN, END, corchete, llave, desbalance, anidado, highlight pair

Resaltar coincidencias de una palabra

Al hacer doble clic en una palabra, el editor ilumina todas sus apariciones en el texto.

Dónde está: Editor SQL › Editor de texto

Haz doble clic en una palabra del editor —el nombre de una tabla, una columna, un alias, una palabra clave— y todas sus demás apariciones se pintan con un fondo turquesa. En iPad el gesto equivalente es el doble toque.

Cómo se decide qué resaltar:
- La comparación es por palabra completa: seleccionar id no ilumina el id que va dentro de identificador.
- No distingue mayúsculas de minúsculas, porque para MySQL Id, id e ID son la misma columna.
- La selección tiene que ser exactamente una palabra: si abarca espacios, comas o paréntesis, o si corta una palabra por la mitad, no se resalta nada.
- La palabra debe tener al menos dos caracteres.
- La palabra seleccionada no se repinta: ya se distingue por el color de selección.

El resaltado se apaga al mover el cursor, al seleccionar otra cosa o al editar el texto. Se iluminan como máximo 500 apariciones; en un script donde se alcance ese tope conviene usar Buscar (⌘F), que además permite saltar de una a otra.

Disponible en macOS, iPad e iPhone.

Palabras clave: resaltar, coincidencias, doble clic, doble toque, apariciones, ocurrencias, palabra, iluminar, seleccionar palabra, highlight

Edición en columna / multi-cursor

Edita simultáneamente en múltiples posiciones del editor.

Dónde está: Editor SQL › Edición en columna

El modo de edición en columna coloca cursores secundarios en varias líneas y escribe o borra en todas a la vez. Es lo que quieres para renombrar un alias en cinco filas, o para añadir un prefijo o un sufijo a un bloque de líneas.

En macOS:
AppKit no trae multi-cursor, así que lo dibuja Calíope. Usa el botón Edición en columna de la barra, o pulsa directamente ⌥⌘↓, que enciende el modo y pone el segundo cursor de una vez; el botón se tiñe de morado mientras está activo. Desde ahí, cada clic suma un cursor, y ⌥⌘↓ / ⌥⌘↑ añaden uno en la línea de abajo o de arriba sin tocar el ratón — se conserva la columna, y se recorta al final de una línea más corta. Esc sale del modo. Aquí ⌘⇧M no es el atajo: en macOS ya abre el selector de fragmentos.

En iPad:
Pulsa ⌘⇧M con Magic Keyboard o el botón Edición en columna de la barra. Con el modo activo, cada toque en el editor acumula un cursor secundario.

En las dos, un cursor secundario es una línea vertical azul con su fila resaltada, y escribir o borrar funciona igual: el carácter va primero al cursor principal, y luego se replica en las posiciones secundarias del índice mayor al menor, para que insertar en una no mueva las que quedan por delante.

Disponible en macOS, iPad e iPhone.

Palabras clave: multi-cursor, multi cursor, column edit, edición en columna, cursores, ⌘⇧M, ⌥⌘↓, añadir cursor, simultáneo, columna, multicursor

Ir a la definición (Go to Definition)

Navega desde el editor directamente a la definición de una tabla, vista, rutina o trigger en el catálogo.

Dónde está: Editor SQL › clic derecho › Ir a la definición

Go to Definition resuelve el nombre de un identificador bajo el cursor y abre la pestaña Catálogos mostrando ese objeto seleccionado.

Cómo activarlo:

PlataformaMétodo
macOS⌘ + clic sobre el identificador en el editor
macOSF12 con el cursor posicionado en el identificador
macOSClic derecho › Ir a la definición en el menú contextual
iPadMantén pulsado cualquier identificador → menú contextual → Ir a la definición

Objetos reconocidos:
- Tablas → abre la pestaña Catálogos y selecciona la tabla
- Vistas → cambia a la pestaña Vistas y selecciona la vista
- Procedimientos y funciones → cambia a la pestaña Rutinas
- Triggers → cambia a la pestaña Triggers

Comportamiento:
1. Calíope consulta los objetos de la base de datos activa en el selector.
2. Si el identificador coincide con un objeto conocido, abre (o activa) la pestaña Catálogos y selecciona el objeto automáticamente — incluida la carga del DDL en el panel inferior.
3. Si el identificador no existe en el esquema activo, la barra de estado muestra "Objeto no encontrado en el esquema" sin abrir el catálogo.

Requisito: debe haber una base de datos activa seleccionada en el selector de la barra de herramientas.

Disponible en macOS, iPad e iPhone.

Palabras clave: go to definition, ir a definición, navegar, tabla, vista, rutina, catálogo, F12, cmd clic, long press, identificador, esquema

Tooltip DDL al pasar el cursor (hover)

Muestra el DDL de tablas, vistas, rutinas y triggers con solo pasar el cursor sobre su nombre en el editor.

Dónde está: Editor SQL › Tooltip DDL

Hover tooltip DDL es la forma más rápida de inspeccionar la definición de un objeto del esquema sin salir del editor.

cómo funciona:

PlataformaComportamiento
macOSDetén el cursor sobre el nombre de cualquier objeto del esquema durante 0,4 s — aparece un popover con el DDL completo
iPadMueve el cursor de texto (toca) sobre un identificador del esquema — aparece la barra DDL bajo la barra de herramientas

Sin puntero (macOS): Navegar › Ficha de la función en el cursor (⌃⌘?) abre la ficha de lo que haya en el cursor de texto — el mismo popover que enseña el hover, incluida una función que acabas de teclear (DATE_FORMAT(). Si ahí no hay nada que documentar, suena un pitido.

Contenido del popover / barra DDL:
- Ícono y badge de tipo (TABLA, VISTA, PROCEDIMIENTO, FUNCIÓN, TRIGGER, EVENTO)
- DDL completo en fuente monoespaciada, con selección de texto habilitada
- Botón "Ir a la definición" → navega al objeto en la pestaña Catálogos

Objetos reconocidos:
Tablas · Vistas · Procedimientos almacenados · Funciones · Triggers · Eventos

Coexistencia con la ayuda de funciones nativas:
- Si el identificador es una función SQL nativa seguida de ( (ej. DATE_FORMAT(), se muestra la documentación de la función, no el DDL.
- Si el identificador es un objeto del esquema sin ( a continuación, se muestra el tooltip DDL.
- Ambos sistemas no se activan simultáneamente.

Caché: el DDL de cada objeto se almacena en memoria durante la sesión para evitar consultas repetidas.

Requisito: debe haber una base de datos activa seleccionada en el selector de la barra de herramientas.

Disponible en macOS, iPad e iPhone.

Palabras clave: ddl, hover, tooltip, popover, create table, show create, definición, tabla, vista, procedimiento, función, trigger, evento, inspección, esquema, hint bar

Quick Open — Apertura rápida de objetos

Paleta de búsqueda para saltar a cualquier objeto del esquema activo tecleando parte de su nombre.

Dónde está: Editor SQL › Quick Open

Quick Open es una paleta de búsqueda instantánea que te permite navegar a cualquier tabla, vista, procedimiento, función, trigger o evento sin abandonar el editor ni recorrer el árbol de Catálogos.

Cómo abrirlo:

PlataformaMétodo
macOS⌘⇧O (menú Navegar › Quick Open…)
iPad⌘⇧O (teclado Magic Keyboard) o botón Quick Open en la barra de herramientas del editor

Cómo usarlo:
1. Se abre un panel con un campo de búsqueda.
2. Escribe cualquier parte del nombre del objeto — la lista se filtra en tiempo real.
3. Selecciona el resultado con las teclas ↑↓ y confirma con , o haz clic directamente en el elemento.
4. Calíope navega automáticamente al objeto en la pestaña Catálogos.
5. Presiona Esc en cualquier momento para cerrar sin navegar.

Algoritmo de búsqueda (fuzzy matching en tres niveles):
- El nombre comienza con el texto escrito → mayor prioridad
- El nombre contiene el texto en cualquier posición → prioridad media
- Los caracteres escritos aparecen en orden como subsecuencia (ej. cru encuentra crear_usuario) → menor prioridad

Los resultados coincidentes se resaltan en el color de acento de la app.

Objetos reconocidos: tablas · vistas · procedimientos · funciones · triggers · eventos

Alcance: busca únicamente en el database activo del selector de la barra de herramientas.

Disponible en macOS, iPad e iPhone.

Palabras clave: quick open, apertura rápida, fuzzy, buscar objeto, paleta, tabla, vista, procedimiento, función, trigger, evento, navegar, catálogo, ⌘⇧O, esquema

Renombrar símbolo en el script

Renombra un alias, CTE o variable y propaga el cambio a todas sus referencias en el script activo.

Dónde está: Editor SQL › clic derecho › Renombrar símbolo

Renombrar símbolo permite cambiar el nombre de cualquier identificador local del script — alias de columna, nombre de CTE, variable — y reemplazar automáticamente todas sus apariciones en el mismo archivo en una sola operación.

¿Cómo invocarlo?

PlataformaAcción
macOSClic derecho sobre el identificador → Renombrar símbolo…
iPadMantén pulsado el identificador → menú contextual → Renombrar símbolo…

Escribe el nuevo nombre en el diálogo que aparece y confirma con Renombrar (o pulsa ↵). Todas las ocurrencias se sustituyen en un solo paso.

Deshacer: la operación completa se deshace con un único ⌘Z (macOS) o agitando el dispositivo / botón deshacer (iPad). No es necesario deshacer ocurrencia por ocurrencia.

Alcance: solo el script abierto en la pestaña activa. No modifica ningún objeto en la base de datos.

Coincidencia: usa límites de palabra completa, por lo que renombrar id no afecta a client_id ni a user_id.

Nota: el reemplazo es sensible a mayúsculas y se aplica sobre el texto completo del script, incluyendo comentarios y literales de cadena si el identificador aparece en ellos.

Disponible en macOS, iPad e iPhone.

Palabras clave: renombrar, rename, símbolo, alias, cte, variable, refactoring, reemplazar, identificador, script, palabra completa, menú contextual

Query Builder — Constructor visual de consultas

Construye consultas SELECT visualmente arrastrando tablas, eligiendo columnas y dejando que Calíope genere los JOINs automáticamente.

Dónde está: Workspace › Query Builder

Query Builder es una pestaña del workspace que te permite construir consultas SELECT de forma visual, sin escribir SQL manualmente.

¿Cómo abrirlo?

- macOS / iPad: pestaña Query Builder en la barra de navegación del workspace (icono de rectángulos agrupados).

Flujo de trabajo

1. El panel izquierdo muestra todas las tablas del database activo.
2. Pulsa + junto a una tabla (o arrástrala al canvas en macOS) para añadirla.
3. Cada tabla aparece como una tarjeta con checkboxes por columna. Las columnas están todas marcadas por defecto; desmarca las que no necesites.
4. Calíope detecta automáticamente las claves foráneas entre las tablas del canvas y genera el JOIN correspondiente.
5. Si no existe FK entre dos tablas, se inserta un CROSS JOIN con un comentario de aviso.
6. El panel inferior muestra el SQL generado en tiempo real.
7. Pulsa Insertar en el editor para abrir el SQL en una nueva pestaña del editor.

Opciones del canvas

ControlDescripción
Tipo de JOINCambia entre INNER, LEFT y RIGHT para todos los JOINs del canvas
AliasToca el alias de una tabla (letra subrayada en azul) para editarlo
Seleccionar todo / ningunoEn el pie de cada tarjeta
Limpiar canvasElimina todas las tablas del canvas

Notas
- Los JOINs se detectan vía information_schema.KEY_COLUMN_USAGE (sintaxis MySQL/MariaDB). Si la base de datos no tiene FK declaradas, aparecerá un CROSS JOIN que deberás ajustar manualmente en el editor.
- El SQL generado es un punto de partida; puedes editarlo libremente una vez insertado.

Disponible en macOS, iPad e iPhone.

Condiciones (WHERE)

Entre el canvas y el SQL hay una sección Condiciones, plegable, donde se filtra la consulta. Pulsa Agregar condición y elige columna, operador y valor.

DetalleQué hace
Operadores=, !=, >, <, >=, <=, LIKE, NOT LIKE, IN, NOT IN, BETWEEN, IS NULL, IS NOT NULL. En columnas numéricas no se ofrece LIKE.
ComillasSe deciden por el tipo declarado de la columna: un varchar se cita aunque el valor parezca un número.
INValores separados por comas. Si un valor lleva una coma, enciérralo entre comillas simples: 'Pérez, Ana', Luis.
Botón {}Trata el valor como expresión SQL en vez de literal: otra columna (p.fecha) o una función (NOW()).
AND / OREl conector se elige por fila. Al mezclarlos, el SQL sale con los paréntesis explícitos, para que la precedencia sea la que se lee.

Una condición a medias no rompe la consulta: se marca en la lista y se omite del SQL.

Aviso de JOIN externo

Con LEFT o RIGHT JOIN, filtrar en el WHERE la tabla del lado que puede venir a NULL descarta justo las filas sin pareja, y el JOIN acaba comportándose como un INNER. Cuando pasa, la condición se marca y se ofrece Mover al ON, que la traslada a la condición de unión y conserva las filas huérfanas. IS NULL no avisa: es el patrón deliberado para buscar «los que no tienen».

El panel de tablas tiene un filtro por nombre en su cabecera: en una base con muchas tablas, escribe parte del nombre en lugar de desplazarte hasta encontrarla. Es el mismo árbol de esquema que usa el resto de la app, acotado a la base activa.

Palabras clave: query builder, constructor, visual, select, join, inner join, left join, foreign key, drag, canvas, tablas, columnas, consulta, sql generado, where, condiciones, filtro, operador, and, or, between, like, in, null, join externo, on

Minimapa del editor

Vista en miniatura del script completo con indicador de posición actual.

Dónde está: Editor SQL › Preferencias → Editor

El minimapa muestra una representación visual reducida de todo el contenido del editor en el margen derecho. Una franja semitransparente azul indica qué porción del script es visible actualmente en el área principal.

Para activarlo:
- macOS: menú Calíope → Preferencias → Editor → Mostrar minimapa.
- iPad: Ajustes de la app → misma opción.

Navegación con el minimapa:
- Clic / toque en cualquier punto del minimapa desplaza el editor a esa posición del script.
- Arrastrar sobre el minimapa permite navegar de forma continua.
- El minimapa se actualiza automáticamente al escribir y al cambiar el scroll.

Representación visual:
Cada línea del script aparece como una barra horizontal cuyo ancho es proporcional a la longitud de la línea (normalizada a 80 caracteres). El color corresponde al texto del editor a baja opacidad; no replica los colores del resaltado de sintaxis.

Dimensiones:
- macOS: 80 pt de ancho en el margen derecho del editor.
- iPad: 64 pt de ancho. El área de texto se ajusta automáticamente para no quedar tapada.

Disponible en macOS, iPad e iPhone.

Palabras clave: minimap, minimapa, mapa, vista general, navegación, script completo, desplazamiento, scroll, margen derecho, posición

Abrir archivos SQL arrastrando

Arrastra un archivo .sql o .txt directamente sobre el workspace para abrirlo en un nuevo tab del editor.

Dónde está: Workspace › Editor SQL

Abrir archivos SQL arrastrando

Puedes abrir cualquier archivo .sql o .txt arrastrándolo directamente sobre la ventana del workspace de Calíope, sin usar el menú ni el selector de archivos.

Cómo hacerlo en macOS:
1. Abre Finder y localiza tu archivo .sql.
2. Arrastra el archivo sobre el área principal del workspace de Calíope.
3. Aparece un indicador visual azul mientras mantienes el archivo sobre el área.
4. Suelta el archivo — el contenido se abre automáticamente en un nuevo tab del editor SQL.

Cómo hacerlo en iPad:
1. Abre la app Archivos en Split View o Stage Manager junto a Calíope.
2. Mantén pulsado el archivo .sql hasta que se "levante".
3. Arrástralo hacia el workspace de Calíope.
4. Suelta sobre el área del editor — el contenido se abre en un nuevo tab.

Formatos aceptados:
- Archivos .sql (cualquier script SQL)
- Archivos .txt que contengan texto SQL

Otros métodos de apertura:
- Menú Archivo → Abrir archivo SQL… (atajo: ⌃⌥O en macOS)
- Arrastrar sobre el icono del Dock en macOS (manejado por el sistema)
- Compartir → Abrir con Calíope desde la app Archivos en iPad

Disponible en macOS, iPad e iPhone.

Palabras clave: arrastrar, soltar, drag, drop, archivo sql, abrir archivo, files app, finder, importar script

Personalizar las barras de herramientas

Reordena los grupos de botones en las barras del editor y de resultados.

Dónde está: Editor SQL › Personalizar (extremo izquierdo de cada barra)

Ambas barras de herramientas del Editor SQL —la barra del editor (superior) y la barra de resultados (inferior)— pueden personalizarse para adaptar el orden de los botones a tu flujo de trabajo.

Cómo hacerlo:
1. Pulsa el botón Personalizar (ícono de tres deslizadores) que aparece en el extremo izquierdo de cada barra.
2. En el panel que se abre, verás la lista de grupos de botones en su orden actual.
3. Arrastra cada fila para reordenarla según tus preferencias.
4. Pulsa Listo para guardar los cambios.

El orden se guarda automáticamente y se mantiene entre sesiones. Usa el botón Restablecer para volver al orden por defecto.

Los grupos disponibles en la barra del editor son: Ejecutar, Formato de código, Seguridad y transacciones, Historial y navegación, Análisis SQL, Herramientas, Rendimiento, Conexión externa y Tamaño de fuente.

Los grupos disponibles en la barra de resultados son: Delimitador, Formato de salida, Opciones, Tamaño de fuente, Guardar resultado, Fijar resultados y Análisis de consulta.

Disponible en macOS, iPad e iPhone, con un orden para el Mac y otro compartido por el iPad y el iPhone.

Palabras clave: personalizar, reordenar, barra herramientas, toolbar, customize, orden, grupos, drag, arrastra

Notificación de query larga

Recibe una notificación del sistema cuando una consulta supera el umbral de tiempo configurado.

Dónde está: Calíope › Preferencias › Notificaciones

Cuando ejecutas una consulta que tarda más de lo esperado y cambias a otra aplicación mientras esperas, Calíope puede enviarte una notificación local al terminar.

Configurar el umbral:
Ve a Preferencias › Notificaciones y activa Query larga completada. Ajusta el umbral con el control de pasos (por defecto 5 s; rango 1–300 s).

La notificación se dispara solo una vez por ventana de 60 s para evitar spam si ejecutas muchas consultas en rápida sucesión. Llega también con Calíope en primer plano: los únicos avisos que se callan con la app delante son los dos del respaldo manual.

Palabras clave: notificación, query larga, tiempo, umbral, segundo plano, alerta

Notificación de resultado grande

Avisa cuando una consulta devuelve un número de filas superior al umbral configurado.

Dónde está: Calíope › Preferencias › Notificaciones

Si ejecutas una consulta que devuelve miles de filas, Calíope puede avisarte mediante una notificación local.

Configurar el umbral:
Ve a Preferencias › Notificaciones y activa Resultado con volumen inusual. Ajusta el umbral con el control de pasos (por defecto 10 000 filas; rango 1 000–100 000).

Los datos siempre se muestran en pantalla; la notificación es solo informativa.

Palabras clave: notificación, resultado grande, filas, umbral, volumen, alerta

Editor avanzado de celdas (texto largo, JSON, binario)

Edita valores complejos en una hoja dedicada con pestañas para texto, JSON y datos binarios.

Dónde está: Resultados › clic derecho › Editar valor avanzado…

El Editor avanzado de celdas es una hoja modal pensada para valores que no caben cómodamente en la cuadrícula: textos extensos (TEXT, MEDIUMTEXT, LONGTEXT), documentos JSON, contenidos binarios (BLOB, VARBINARY) y cadenas con saltos de línea.

Cómo abrirlo
- macOS: haz clic derecho sobre la celda y elige Editar valor avanzado…, o pulsa ⌘E con la celda seleccionada.
- iPad: mantén pulsada la celda y elige Editar valor avanzado… en el menú contextual.

Pestañas del editor
- Texto — campo de edición de texto plano con conteo de caracteres, contar líneas y opción de envoltura. Útil para VARCHAR/TEXT con saltos de línea.
- JSON — editor con coloreado y validación. El botón Formatear aplica indentación de 2 espacios; Minificar lo deja en una línea. Si el JSON es inválido, una barra inferior muestra el error con la línea y columna exactas.
- Hex — pestaña editable que muestra el contenido en hexadecimal (pares en mayúscula, 16 bytes por línea). Acepta espacios, saltos de línea y un prefijo 0x opcional al pegar.
- Base64 — pestaña editable con el contenido en base64 estándar (RFC 4648). Acepta whitespace al pegar.
- Imagen — previsualiza los bytes actuales como imagen si su contenido es interpretable (PNG, JPEG, GIF, etc.). Refresca en vivo al editar Hex o Base64. La imagen se acerca: pellizca con dos dedos, gira la rueda con el puntero encima, o usa los botones del pie, que llevan el porcentaje en medio y los atajos ⌘−, ⌘+ y ⌘0. El recorrido va del 100 %, que es la imagen ajustada al marco, al 800 %; el doble clic —doble toque en iPad— alterna entre ajustada y el 200 % anclado donde tocaste, y arrastrar la desplaza sin despegarla del borde.

Cada pestaña editable incluye los botones Formatear (re-indenta los bytes válidos), Pegar (lee del portapapeles) y Restablecer (vuelve al valor original). Si el contenido tipeado no decodifica, un badge rojo lo indica y el botón OK se desactiva.

Guardar o descartar
- Guardar — prepara la sentencia UPDATE y la abre en la Previsualización de cambios antes de ejecutarla; nunca se ejecuta directamente.
- Cancelar — cierra sin modificar la fila. La celda original permanece sin cambios.

Restricciones
- Si la tabla no tiene clave primaria o no se puede identificar la fila de forma única, el botón Guardar queda desactivado. En ese caso Calíope sugiere ejecutar la sentencia UPDATE manualmente.
- Para valores NULL, usa el menú Valor › Establecer NULL dentro del editor; no escribas la palabra literal en el campo de texto.
- El editor entrega los bytes al pipeline UPDATE como cadena UTF-8. Bytes que no formen UTF-8 válido (por ejemplo 0xDEADBEEF puro) se sustituyen por el carácter de reemplazo al guardar; para esos casos prefiere construir el UPDATE manualmente con UNHEX('…') o literales 0x….

Palabras clave: editor avanzado, celda, advanced cell editor, texto largo, json, blob, binario, varbinary, hex, formatear json, edición compleja, ⌘E, update, previsualización

Comparar resultados de dos consultas

Ejecuta la misma consulta contra dos bases de datos o servidores distintos y visualiza fila a fila las diferencias.

Dónde está: Editor SQL › Ejecutar en dos bases…

La vista de Comparación de resultados te permite ejecutar una misma consulta contra dos sesiones diferentes — por ejemplo, producción vs. staging, o dos réplicas — y ver las diferencias fila por fila y celda por celda.

Cómo lanzar la comparación
- Abre el Editor SQL en una sesión, redacta la consulta y despliega el menú Ejecutar ▸ en la barra de la vista.
- Elige Ejecutar en dos bases… y selecciona la segunda base o servidor con el que quieres contrastar. Ambas ejecuciones corren en paralelo.
- Al terminar, la cuadrícula de resultados se sustituye por la vista comparada.

Barra de resumen (arriba)
- Dos "badges" con el color de cada base: azul = primaria, naranja = secundaria. Cada uno muestra el nombre de la sesión, el número de filas y el tiempo (ms).
- Insignia de diferencias: verde con ✓ Idénticos cuando todo coincide, o naranja con ⚠︎ indicando cuántos valores difieren (N diferencias) y cuántas filas sólo existen en un lado (M filas extra).
- Toggle Solo diffs — filtra la tabla para mostrar únicamente las filas con diferencia.

Cuadrícula de comparación
- Cada fila comienza con un indicador:
- = (gris) — la fila es idéntica en ambas bases.
- P (azul) — fila del lado primario.
- S (naranja) — fila del lado secundario.
- Filas con valores distintos aparecen apareadas (P encima, S debajo) con las celdas divergentes resaltadas en rojo (primaria) o verde (secundaria).
- Filas que existen sólo en un lado aparecen con fondo teñido más intenso.

Otros estados
- Filas afectadas — si la consulta es un INSERT/UPDATE/DELETE, la vista muestra contadores grandes lado a lado con la etiqueta Filas afectadas idénticas o la diferencia numérica.
- Error en una o ambas — si una ejecución falló, aparece el bloque de error con el mensaje monospaceado (seleccionable).
- Columnas no coinciden — si las dos consultas devolvieron conjuntos de columnas distintos, se listan lado a lado con + para columnas extras y para las comunes.

Menú contextual sobre una celda
- Copiar — copia el valor exacto al portapapeles del sistema.

Notas
- El orden de filas viene de cada motor tal cual; para comparaciones estables usa siempre ORDER BY explícito.
- Los valores NULL se muestran en rojo tenue con la etiqueta literal NULL.

Palabras clave: comparar, comparación, diff, diferencias, dos bases, dos servidores, primary, secondary, primaria, secundaria, solo diffs, filas idénticas, filas afectadas, columnas no coinciden, duales, lado a lado

Ver y editar datos espaciales en un mapa

Cómo se leen las columnas GEOMETRY, cómo se dibujan y cómo se editan sin escribir SQL a mano.

Dónde está: Editor SQL › Mapa

Una columna GEOMETRYPOINT, LINESTRING, POLYGON y sus variantes múltiples— ya no se ve como un puñado de bytes: Calíope la muestra como texto WKT en la rejilla, igual que lo escribiría ST_AsText, y la dibuja en un mapa.

Abrir el mapa

Con un resultado que traiga al menos una columna espacial, el botón Mapa de la barra de resultados abre un panel bajo la rejilla. Se reparte el alto con el resto del editor arrastrando el separador, como el gráfico o el terminal.

Si el resultado trae varias columnas espaciales, un selector a la izquierda elige cuál se dibuja. Los puntos salen como pines, las líneas y los polígonos como trazos; un polígono con agujeros se dibuja con sus huecos.

Lo que no se dibuja, se dice

Al pie del panel aparecen los recuentos que explican la diferencia entre las filas del resultado y lo que hay en el mapa: cuántas filas no tienen geometría, cuántas se quedaron fuera por el techo de dibujo —diez mil geometrías— y cuántas no se pudieron leer. Una fila que no se ve nunca desaparece en silencio.

Editar

El selector de modo tiene tres posiciones. En Explorar solo se mira. En Mover los pines se arrastran: al soltar uno, Calíope compone el UPDATE y lo enseña antes de ejecutarlo — nada se escribe hasta que pulsas Aplicar, y si cancelas, el pin vuelve a su sitio. En Añadir, un toque sobre el mapa propone el INSERT de una geometría nueva.

Al seleccionar una línea o un polígono en modo Mover aparecen sus vértices: los redondos se arrastran para moverlos y los marcados con +, que están en mitad de cada segmento, crean un vértice nuevo al arrastrarlos. Los anillos de un polígono se mantienen cerrados solos.

El botón Vaciar deja la geometría de la fila seleccionada en NULL sin borrar la fila.

Cuándo no se puede editar

Si en lugar del selector de modo ves un candado, el mapa es de solo lectura. Son dos casos, y el motivo aparece al posar el cursor: la consulta no permite saber sobre qué tabla se escribiría —un JOIN, una vista, una subconsulta—, o el resultado no trae una clave primaria fiable. Sin ella, un UPDATE podría alcanzar varias filas, así que Calíope prefiere no ofrecerlo. Añadir la clave primaria al SELECT suele bastar.

El orden de las coordenadas

En POINT(a b), cuál de los dos números es la latitud depende del servidor y del sistema de referencia, y no es un detalle menor: al revés, un punto de Madrid acaba en el océano Índico. MySQL 8 con SRID 4326 escribe la latitud primero, porque es lo que declara EPSG:4326; MariaDB y SRID 0 escriben la longitud primero. Calíope lo resuelve solo —muestra y escribe en el mismo orden que el servidor— y por eso el texto de la celda coincide siempre con lo que devuelve ST_AsText en ese mismo servidor.

Palabras clave: espacial, gis, mapa, geometry, point, polygon, linestring, coordenadas, latitud, longitud, srid, wkt, geolocalización, mapkit

Perfilador de columna

Estadísticas detalladas de una columna del resultado: min, max, avg, NULLs, distintos y top valores.

Dónde está: Grilla de resultados › clic derecho › Perfilar columna…

El Perfilador de columna analiza los valores de cualquier columna del resultado de una consulta SQL.

Cómo activarlo:
- macOS: haz clic derecho sobre el encabezado de una columna en la grilla de resultados y selecciona Perfilar columna…
- iPad: pulsa el botón Perfilar col. en la barra de resultados para abrir el panel con selector de columna.

Información mostrada:
- Total de filas, conteo de NULLs y porcentaje
- Valores distintos y su porcentaje
- Mínimo, máximo y promedio (si la columna es numérica)
- Top 8 valores más frecuentes con gráfico de barras

Los cálculos se realizan sobre las filas ya cargadas, sin ejecutar consultas adicionales al servidor.

Palabras clave: column profiler, estadísticas, min, max, avg, NULL, distintos, histograma, frecuencia

Perfil de ejecución (SHOW PROFILE)

Desglosa las fases internas de una consulta con su tiempo de ejecución.

Dónde está: Editor SQL › Perfilar

El Perfilador de consulta usa SET profiling = 1 y SHOW PROFILE FOR QUERY n (sintaxis MySQL/MariaDB) para obtener el desglose de fases internas de MySQL al ejecutar una consulta.

Cómo activarlo: pulsa el botón Perfilar en la barra de resultados del Editor SQL. Calíope re-ejecuta la consulta actual y muestra las fases (parsing, optimizing, executing, sending data, etc.) con su duración en milisegundos.

El gráfico de barras horizontales destaca visualmente las fases más costosas. La columna % indica qué fracción del tiempo total consume cada fase. Si una fase supera el 50% se marca en rojo.

> Nota: SHOW PROFILE requiere la variable have_profiling = YES en el servidor. Puede no estar disponible en versiones modernas de MySQL 8.0+ donde fue deprecado; en ese caso usa Visual EXPLAIN en su lugar.

Palabras clave: SHOW PROFILE, profiling, fases, ejecución, parsing, optimizing, sending data, rendimiento

Asesor de índices

Detecta recorridos completos en el plan de ejecución y sugiere CREATE INDEX.

Dónde está: Editor SQL › Índices

El Asesor de índices pide el plan de ejecución de la consulta actual y busca en él los recorridos completos de tabla.

Cómo activarlo: pulsa Índices en la barra de resultados. Calíope muestra:

1. El plan traducido, nodo a nodo, con el mismo vocabulario y los mismos colores que el EXPLAIN visual: los recorridos completos salen en rojo.
2. Las sugerencias, con el motivo y botones para copiar el SQL o insertarlo en el editor. Si la consulta filtra por una columna que ningún índice cubre, la sugerencia es un CREATE INDEX sobre esa columna; si no filtra por ninguna, ningún índice evita el recorrido y la sugerencia lo dice en forma de comentario, en vez de proponer un índice que no serviría.

Si no hay recorridos completos, aparece un sello verde. El asesor cubre el caso más común; para el árbol entero, con sus filas y su detalle, usa el EXPLAIN visual.

Palabras clave: EXPLAIN, índice, recorrido completo, full table scan, CREATE INDEX, optimización, rendimiento, asesor

Gráfico de resultado

Visualiza el resultado de una consulta como gráfico de barras, líneas o pastel.

Dónde está: Editor SQL › Gráfico

El Gráfico de resultado convierte las filas de una consulta SELECT en una visualización interactiva usando Swift Charts.

Cómo activarlo: ejecuta una consulta que devuelva datos y pulsa Gráfico en la barra de resultados. El panel de gráfico aparece debajo de la grilla.

Controles:
- Tipo: Barras, Líneas o Pastel
- Eje X: columna que se usa como etiqueta (recomendado: texto o fecha)
- Eje Y: columna numérica que se representa
- Máx: número máximo de filas a graficar (5–500)

El gráfico detecta automáticamente las columnas numéricas y selecciona los valores más sensatos. Funciona en macOS, iPad e iPhone.

Palabras clave: gráfico, chart, barras, líneas, pastel, pie, visualizar, Swift Charts, resultado

Benchmark de consultas

Mide el tiempo de ejecución de una consulta SQL en múltiples iteraciones con estadísticas detalladas.

Dónde está: Editor SQL › Benchmark

El Benchmark ejecuta la consulta activa del editor N veces y calcula estadísticas de rendimiento, lo que te permite detectar variaciones de tiempo y evaluar el impacto de cambios de índices o de estructura.

Cómo activarlo:
Pulsa el botón Benchmark (ícono de cronómetro) en la barra de herramientas del Editor SQL. Se abre una hoja con el SQL de la consulta activa pre-cargado.

Controles:
- Iteraciones — usa el stepper para elegir cuántas veces se ejecuta la consulta (1–1000, incrementos de 10). El defecto son 10 iteraciones.
- Iniciar benchmark — comienza la ejecución. El botón se deshabilita si el editor está vacío.
- Detener — cancela la ejecución en curso y conserva los resultados acumulados hasta ese momento.

Métricas mostradas:
- Total — suma de todos los tiempos de ejecución en ms.
- Promedio — media aritmética de los tiempos de ejecución.
- Mínimo — la ejecución más rápida.
- Máximo — la ejecución más lenta.
- Desv. Est. — desviación estándar: valores altos indican inconsistencia en los tiempos (posible contención o carga variable del servidor).

Gráfico de barras: cada barra representa una iteración. Las barras se colorean en verde (rápido), amarillo (intermedio) o rojo (lento, más del 66% del máximo) para identificar visualmente outliers.

Casos de uso:
- Comparar el tiempo de una consulta antes y después de crear un índice.
- Verificar si el servidor responde de forma consistente bajo carga.
- Medir el impacto de cambios en la cláusula WHERE o en los JOIN.

Disponible en macOS, iPad e iPhone.

Palabras clave: benchmark, rendimiento, iteraciones, tiempo, estadísticas, promedio, mínimo, máximo, desviación estándar, cronómetro, performance, medir