Repository navigation
Nexa SQL 0.2.0
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
oracledbcrate): 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
:NEWtriggers 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
'', settinggrid.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
CONNECTin 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|errorsaccepts SQL Server three-part namesDB.schema.name/DB..name(switches database withUSE).
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 공식
oracledbcrate): 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.