Skip to content

Nexa SQL 0.2.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 01:57

Nexa SQL 0.2.0

Lightweight cross-platform SQL client (IDE) for Oracle, SQL Server, PostgreSQL and SQLite, with the nsql CLI.
Installers only (no portable build). Changes: see docs/DEVLOG.md.

OS File Install
Windows x64 nexa-sql-0.2.0-windows-x64.msi Double-click, or msiexec /i … /qn (silent; adds nsql to PATH; .sql association optional) · winget install SosomLab.NexaSQL · choco install nexa-sql (after moderation)
macOS (Universal) nexa-sql-0.2.0-macos-universal.pkg / .dmg Installer → /Applications/Nexa SQL.app + /usr/local/bin/nsql · brew install --cask kiros33/tap/nexa-sql
Linux x86_64 .deb / .rpm sudo apt install ./…deb / sudo dnf install ./…rpm · or the signed repository at https://pkg.sosomlab.com/ (apt install nexa-sql / dnf install nexa-sql)

Verify downloads with sha256sums.txt. Builds are not code-signed yet (DR-20): macOS Gatekeeper and Windows SmartScreen will warn.
License: PolyForm Noncommercial 1.0.0 — free for noncommercial use only.

What's in this release (since 0.1.9)

Oracle without Instant Client

  • New built-in Oracle Thin driver (pure Rust, Oracle's official oracledb crate): connect to Oracle without installing Instant Client. It is the default (oracle.driver = thin | oci); switching takes effect without restarting, and the Instant Client settings are locked while Thin is selected. A one-line notice lists what Thin cannot do yet (cancel during a running batch — a second ■ forces the stop, implicit result sets, OS authentication, native network encryption, servers older than 12c, array DML bulk load).
  • CLI and GUI give the same results with either driver (checked by a parity test that compares both outputs, including :NEW triggers created through the Thin driver).

Editor

  • Hold Ctrl to show bookmark labels and table/column descriptions at the end of lines (current statement, including comment lines above it, or the whole document — settings bookmark.inline_label_ctrl_scope, editor.inline_ctrl_scope, editor.desc_inline). Large documents switch to a cheaper mode automatically.
  • Binary files (images, archives, executables) open as a read-only notice tab instead of garbled text; one click in the Project Explorer uses the preview slot, double-click promotes it, and very large binaries no longer show the large-file question. UTF-16 text still opens as text (BOM, or when UTF-16 is chosen as the encoding).
  • Read-only tabs (opened as read-only or binary notices) keep their read-only state across project save and restore; Save / Save As is blocked on them.
  • Ctrl+Enter between two statements runs the nearer one; a selection is honored even when the result grid has focus.
  • Gutter: line numbers and bookmark mnemonics are vertically aligned with the text.
  • Status bar column (Col) counts tab stops like other editors.

Result grid

  • Shift+Enter or Shift+double-click opens the value viewer; the viewer can set a cell to NULL, an empty string or a value (empty string is shown as '', setting grid.empty_text).
  • Date/time cells: Ctrl+; inserts "now" for the column type, Ctrl+Shift+; the current time; also in the cell context menu.
  • Dragging a column header onto the condition bar, the editor or a filter box inserts the column name; dropping outside cancels cleanly.
  • Strict OFFSET re-query asks before refetching (grid.refetch_confirm); ■ now stops a page refetch in progress.
  • SQL Server: an empty result set is shown as an empty grid instead of keeping the previous result.

Object explorer and sessions

  • Server header shows only the endpoint; hover it for DBMS, version, edition, login, current database, endpoint and profile.
  • Private sessions created with CONNECT in an editor are marked with a P chip on the connection row; hover lists the tabs using them. The status bar prefix [Private: …] appears only when there is a connection description.
  • Rapid schema switches no longer leave the explorer on the wrong schema.

Search and UI

  • Find in Files: the Where field is case-insensitive by default on every OS, with its own Aa toggle.
  • Command palette finds commands by English name, localized name or command id.
  • New activity bar icons; every context menu reserves an icon column; menu captions no longer end with "…".
  • Popups: the open popup receives keys and mouse wheel first; tooltips sit above the item (server header tooltip below); rename prompts accept mouse clicks and drags anywhere in the input.
  • Settings window has a Changed only switch (next to Advanced) that lists just the settings that differ from their defaults; not persisted.
  • Linux: network change and folder change watching (netlink, inotify), and the system theme lookup is cached.

CLI

  • nsql cat source|ddl|detail|errors accepts SQL Server three-part names DB.schema.name / DB..name (switches database with USE).

Fixes

  • Release builds no longer delay the Open Files list by up to 0.5 s after switching tabs when no project is open (T-330).
  • Many smaller fixes from code review on all three OSes (stale Ctrl labels after switching tabs, view tabs lost on project save, binary notice table cleanup, . path segments in the Project Explorer, panel borders, prompt edges).

Testing

  • New end-to-end scripts: scripts/oracle-driver-parity-e2e.sh (OCI vs Thin output parity), scripts/linux-121-122-e2e.sh (features of this release driven by startup commands), scripts/linux-scroll-e2e.sh, scripts/linux-fetch-consistency-e2e.sh.

Full details: docs/DEVLOG.md · docs/journal

Distribution note: this version is published to GitHub Releases, Homebrew (kiros33/tap) and the Linux repository (pkg.sosomlab.com). winget and Chocolatey are paused until the pending reviews finish.


크로스플랫폼 경량 SQL 클라이언트(IDE) + CLI nsql — 설치본만 배포합니다(포터블 없음 · DR-27).

운영체제 파일 설치
Windows x64 nexa-sql-0.2.0-windows-x64.msi 더블클릭 또는 msiexec /i … /qn(조용한 설치 · PATH 추가 옵션 · .sql 연결은 선택)
macOS (Universal · Apple Silicon/Intel) nexa-sql-0.2.0-macos-universal.pkg 설치기 실행 → /Applications/Nexa SQL.app + /usr/local/bin/nsql 링크
macOS (drag-to-Applications) nexa-sql-0.2.0-macos-universal.dmg 끌어 놓기 · CLI 링크는 dmg 안 안내문
Linux x86_64 (deb) nexa-sql_0.2.0_amd64.deb sudo dpkg -i 또는 sudo apt install ./…deb
Linux x86_64 (rpm) nexa-sql-0.2.0-1.x86_64.rpm sudo dnf install ./…rpm
macOS (Homebrew) — brew install --cask kiros33/tap/nexa-sql(공개 뒤 자동 반영 · nsql도 PATH에)
Linux (APT 저장소 · Debian/Ubuntu) — 저장소 등록 뒤 sudo apt install nexa-sql · 갱신 = apt upgrade(아래 · 공개 뒤 자동 반영)
Linux (RPM 저장소 · Fedora/RHEL 계열) — 저장소 등록 뒤 sudo dnf install nexa-sql · 갱신 = dnf upgrade(아래 · 공개 뒤 자동 반영)

Linux 패키지 저장소(pkg.sosomlab.com · 서명됨)

한 번 등록하면 새 버전을 apt upgrade/dnf upgrade로 받습니다(안내 = https://pkg.sosomlab.com/).

# APT(Debian · Ubuntu)
sudo curl -fsSLo /usr/share/keyrings/sosomlab-archive-keyring.gpg https://pkg.sosomlab.com/sosomlab-archive-keyring.gpg
sudo curl -fsSLo /etc/apt/sources.list.d/sosomlab.sources https://pkg.sosomlab.com/apt/sosomlab.sources
sudo apt update && sudo apt install nexa-sql
# RPM(Fedora · RHEL 계열)
sudo curl -fsSLo /etc/yum.repos.d/sosomlab.repo https://pkg.sosomlab.com/rpm/sosomlab.repo
sudo dnf install nexa-sql

받은 파일은 sha256sums.txt로 확인하세요. 제거: Windows 프로그램 추가/제거 · macOS sudo "/Applications/Nexa SQL.app/Contents/Resources/uninstall.sh" · Linux dpkg -r nexa-sql/dnf remove nexa-sql.
사용자 데이터(설정·연결 프로필)는 OS 사용자 폴더에 있으며 제거해도 보존됩니다.

서명

코드 서명 키가 투입되지 않은 빌드는 macOS Gatekeeper·Windows SmartScreen이 경고합니다(DR-20 · 별도 요청 시 서명).

  • macOS: xattr -dr com.apple.quarantine "/Applications/Nexa SQL.app"
  • Windows: SmartScreen "추가 정보 → 실행"

라이선스: PolyForm Noncommercial 1.0.0 — 변경 내역: docs/DEVLOG.md

이번 판에 담긴 것(0.1.9 이후)

Instant Client 없는 Oracle

  • 내장 Oracle Thin 드라이버(순수 Rust · Oracle 공식 oracledb crate): Instant Client를 설치하지 않고 Oracle에 접속합니다. 기본값이며(oracle.driver = thin | oci) 재시작 없이 바뀌고, Thin을 고르면 Instant Client 설정은 잠깁니다. 접속 직후 한 줄 안내로 Thin이 아직 못 하는 것(실행 중 배치 취소 — 두 번째 ■ = 강제 중지 · 암묵 결과 집합 · OS 인증 · 네이티브 네트워크 암호화 · 12c 미만 서버 · 배열 DML 대량 적재)을 알려 줍니다.
  • 두 드라이버의 CLI·GUI 결과가 같습니다(Thin으로 만든 :NEW 트리거까지 두 출력을 대조하는 동일성 시험).

편집기

  • Ctrl을 누르고 있으면 줄 끝에 북마크 라벨과 테이블/컬럼 설명이 보입니다(현재 문장 + 위 주석 줄 또는 문서 전체 · 설정 bookmark.inline_label_ctrl_scope · editor.inline_ctrl_scope · editor.desc_inline). 큰 문서는 자동으로 가벼운 방식으로 바뀝니다.
  • 이진 파일(이미지 · 압축 · 실행 파일)은 깨진 글 대신 읽기 전용 안내 탭으로 열립니다. 프로젝트 탐색기 한 번 클릭 = 미리보기 · 더블클릭 = 정식 탭 · 아주 큰 이진도 큰 파일 질문 없이 엽니다. UTF-16 글은 그대로 글로 엽니다(BOM · 또는 인코딩을 UTF-16으로 고른 경우).
  • 읽기 전용 탭(읽기 전용으로 연 파일 · 이진 안내)은 프로젝트 저장·복원 뒤에도 읽기 전용이며, 저장 · 다른 이름으로 저장이 막힙니다.
  • 두 문장 사이에서 Ctrl+Enter = 가까운 쪽 문장 실행 · 결과 그리드에 포커스가 있어도 선택 영역을 따릅니다.
  • 거터: 줄 번호 · 북마크 니모닉이 본문 글자와 세로로 맞습니다.
  • 상태줄 열(Col)이 다른 편집기처럼 탭 간격을 셉니다.

결과 그리드

  • Shift+Enter · Shift+더블클릭 = 값 보기 창 · 창에서 셀을 NULL / 빈 문자열 / 값으로 고를 수 있습니다(빈 문자열은 ''로 표시 · 설정 grid.empty_text).
  • 날짜·시각 셀: Ctrl+; = 열 종류에 맞는 "지금" · Ctrl+Shift+; = 현재 시각 · 셀 우클릭 메뉴에도.
  • 열 머리를 조건 바 · 편집기 · 필터 상자로 끌어 놓으면 열 이름이 들어가고, 밖에 놓으면 깔끔하게 취소됩니다.
  • 엄격 OFFSET 재조회 전에 묻고(grid.refetch_confirm) · 페이지 재조회 중 ■로 멈춥니다.
  • SQL Server: 행이 0인 결과가 빈 그리드로 나옵니다(종전 = 앞 결과가 남음).

객체 탐색기 · 세션

  • 서버 머리글 = 끝점만 · 머물면 DBMS · 버전 · 에디션 · 로그인 · 현재 DB · 끝점 · 프로필.
  • 편집기 CONNECT로 만든 전용 세션 = 연결 행에 P 칩 · 머물면 그 세션을 쓰는 탭 목록 · 상태줄 [전용: …] 접두는 접속 설명이 있을 때만.
  • 스키마를 빠르게 연달아 바꿔도 탐색기가 엉뚱한 스키마에 머물지 않습니다.

검색 · 화면

  • 파일 검색 범위(Where) = 모든 OS에서 기본 대소문자 무시 · 범위 칸 전용 Aa 토글.
  • 명령 팔레트가 영어 이름 · 지역화 이름 · 명령 id로 찾습니다.
  • 활동 막대 아이콘 교체 · 모든 우클릭 메뉴에 아이콘 칸 · 메뉴 글 끝 "…" 제거.
  • 팝업: 열린 팝업이 키·휠을 먼저 받음 · 툴팁은 항목 위(서버 머리글 툴팁은 아래) · 이름 바꾸기 입력란 어디서나 클릭·끌기.
  • 설정 창 "변경" 스위치(고급 옆) = 기본값과 다른 설정만 보입니다 · 비영속.
  • Linux: 네트워크 변경 · 폴더 변경 감시(netlink · inotify) · 시스템 테마 조회 캐시.

CLI

  • nsql cat source|ddl|detail|errors가 SQL Server 3부 이름 DB.스키마.이름 / DB..이름을 받습니다(USE로 DB 전환).

수정

  • 프로젝트 없이 탭을 옮길 때 열린 파일 목록이 0.5 s 늦게 바뀌던 것 수정(T-330).
  • 3-OS 코드 리뷰로 찾은 작은 결함 다수(탭 전환 뒤 남는 Ctrl 라벨 · 프로젝트 저장 때 뷰 탭 누락 · 이진 안내 표 정리 · 프로젝트 탐색기 경로의 . · 패널 테두리 · 입력창 가장자리).

시험

  • 새 E2E: scripts/oracle-driver-parity-e2e.sh(OCI ↔ Thin 출력 대조) · scripts/linux-121-122-e2e.sh(이번 판 기능 · 기동 명령) · scripts/linux-scroll-e2e.sh · scripts/linux-fetch-consistency-e2e.sh.