Repository navigation
Nexa SQL 0.1.9
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.1.9-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.1.9-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.8)
macOS
- Network change detection on macOS: VPN connect/disconnect and Wi-Fi changes are now noticed (SystemConfiguration), so the next action checks whether the server is still reachable before it runs (
net.watch, on by default; previously Windows only). - Folder change watching on macOS (FSEvents): files created, renamed or deleted outside the app (Finder, git, build tools) now show up immediately in the Project Explorer tree, the Go to File (⌘P) index and the status flash (
project.watch; previously Windows only, macOS fell back to a timed refresh). - Lower idle memory: when the main window has been idle for a moment, the macOS drawing surface pool is trimmed to the front buffer (hidden setting
gfx.mac_present_trim_ms, default 1500 ms, 0 = off). Measured: about 40 MB less footprint while idle.
Fixes
- Crash when dragging the scrollbar of a very large result (hundreds of thousands of rows): the thumb position math overflowed 32-bit integers (abort in Debug builds, wrong scroll position in Release). It now uses 64-bit intermediate values.
- Oracle package overloads: two members with the same name (for example
PRC_RUN_ALL×2) used to show the union of both argument lists. Each member now shows its overload number (#1,#2) and only its own arguments. - PostgreSQL routines: the object explorer's Arguments folder was always empty for functions with arguments. It now matches the exact signature (one overload) and also lists unnamed arguments as
$1,$2… - Korean input: when the first jamo of a composition replaced a selection, ⌘Z / Ctrl+Z could not bring the selection back. Composition is now one undo step.
New
- Object explorer context menus show icons (setting
ui.menu_icons). - Copy name + Shift = Copy full name (
schema.object,schema.package.member, SQL Serverdb.schema.object), quoted according toeditor.quote_idents. - Package member ▸ Generate SQL ▸ Call: a call statement with named bind arguments for that member's overload. Generate SQL ▸ Call on a whole package now produces one block per overload.
&namesubstitution by dialect (decision D-272, new settingscript.define= auto | on | off): Oracle keeps SQL*Plus behaviour (an undefined&nameis prompted). For SQL Server, PostgreSQL, SQLite and MySQL only names defined withDEFINEor:setvarare substituted; an undefined&xis sent as-is, so'R&D'no longer opens an input dialog.SET DEFINE ON/SET DEFINE OFFin a script still override. The CLI (run,shell,plan,query,export,import) follows the same setting.
Testing
- New end-to-end scripts:
scripts/define-e2e.sh(substitution across 4 DBMS, CLI and GUI),scripts/mac-trim-e2e.sh(idle surface trim with window captures),scripts/pkg-overload-e2e.sh(Oracle package overloads); function check scenarios S95 (large result scrollbar drag) and S96 (folder change flash). - Research documents used as the checklist for dialect features and completion accuracy:
docs/108(syntax and objects of each supported DBMS) anddocs/109(ANSI/ISO SQL:2016/2023).
Packaging
- Package metadata, installer and uninstaller messages, and bundled notices are English by default (Korean is added through the localized layers only).
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.1.9-windows-x64.msi |
더블클릭 또는 msiexec /i … /qn(조용한 설치 · PATH 추가 옵션 · .sql 연결은 선택) |
| macOS (Universal · Apple Silicon/Intel) | nexa-sql-0.1.9-macos-universal.pkg |
설치기 실행 → /Applications/Nexa SQL.app + /usr/local/bin/nsql 링크 |
| macOS (drag-to-Applications) | nexa-sql-0.1.9-macos-universal.dmg |
끌어 놓기 · CLI 링크는 dmg 안 안내문 |
| Linux x86_64 (deb) | nexa-sql_0.1.9_amd64.deb |
sudo dpkg -i 또는 sudo apt install ./…deb |
| Linux x86_64 (rpm) | nexa-sql-0.1.9-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.8 이후)
macOS
- 네트워크 변경 감지: VPN 연결/해제 · Wi-Fi 바뀜을 알아채고(SystemConfiguration), 다음 동작 전에 서버가 살아 있는지 먼저 확인합니다(
net.watch· 기본 켬 · 종전 = Windows만). - 폴더 변경 감시(FSEvents): 앱 밖(Finder · git · 빌드)에서 만들거나 이름을 바꾸거나 지운 파일이 프로젝트 탐색기 트리 · 파일로 이동(⌘P) 색인 · 상태 플래시에 바로 반영됩니다(
project.watch· 종전 = Windows만 · macOS는 시간 간격 새로 고침). - 유휴 메모리 감소: 메인 창이 잠시 쉬면 macOS 그리기 표면 풀을 앞 장만 남깁니다(숨은 설정
gfx.mac_present_trim_ms· 기본 1500 ms · 0 = 끔). 실측 유휴 풋프린트 약 40 MB 감소.
수정
- 아주 큰 결과(수십만 행)의 스크롤바를 끌면 앱이 끝나던 결함 — 썸 위치 계산이 32비트 정수를 넘쳤습니다(Debug = 종료 · Release = 엉뚱한 위치). 64비트 중간 계산으로 고쳤습니다.
- Oracle 패키지 오버로드: 이름이 같은 두 멤버(예
PRC_RUN_ALL×2)가 두 오버로드의 인자를 합쳐 똑같이 보이던 결함 — 멤버마다 오버로드 번호(#1·#2)와 그 오버로드의 인자만 보입니다. - PostgreSQL 루틴: 객체 탐색기 Arguments 폴더가 인자 있는 함수에서도 늘 비던 결함 — 서명으로 그 오버로드 하나를 정확히 찾고, 이름 없는 인자도
$1·$2…로 보입니다. - 한글 입력: 첫 자음 조합이 선택 영역을 지운 뒤 ⌘Z/Ctrl+Z로 되돌릴 수 없던 결함 — 조합이 한 번의 되돌리기 단위가 됩니다.
새 기능
- 객체 탐색기 우클릭 메뉴 아이콘(설정
ui.menu_icons). - 이름 복사 + Shift = 전체 이름 복사(
스키마.객체·스키마.패키지.멤버· SQL ServerDB.스키마.객체· 인용은editor.quote_idents). - 패키지 멤버 ▸ Generate SQL ▸ Call = 그 오버로드의 이름 지정 바인드 호출문 · 패키지 전체 Call = 오버로드마다 블록.
&이름치환의 방언별 기본(결정 D-272 · 새 설정script.define= auto | on | off): Oracle은 SQL*Plus처럼 정의 안 된&이름을 묻습니다. SQL Server · PostgreSQL · SQLite · MySQL은DEFINE·:setvar로 정의한 이름만 바꾸고 정의 안 된&x는 그대로 보내므로'R&D'에 입력 창이 뜨지 않습니다. 스크립트의SET DEFINE ON/OFF가 여전히 앞섭니다. CLI(run·shell·plan·query·export·import)도 같은 설정을 따릅니다.
시험
- 새 E2E:
scripts/define-e2e.sh(4개 DBMS 치환 · CLI·GUI) ·scripts/mac-trim-e2e.sh(유휴 표면 해제 · 창 캡처) ·scripts/pkg-overload-e2e.sh(Oracle 패키지 오버로드) · 기능 점검 S95(큰 결과 스크롤바 끌기) · S96(폴더 변경 플래시). - 방언 기능·자동 완성 정확도 점검표로 쓰는 조사 문서:
docs/108(지원 DBMS별 문법·객체) ·docs/109(ANSI/ISO SQL:2016/2023 전수).
포장
- 패키지 메타데이터 · 설치/제거 안내 · 동봉 고지의 기본 글이 영어입니다(한국어는 지역화 층으로만 덧붙임).