plsqlwks 0.1.9.0__tar.gz → 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/PKG-INFO +178 -1
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/README.md +177 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/doc/API.md +67 -3
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/doc/COMPATIBILITY.md +96 -33
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/doc/PLUGINS.md +18 -0
- plsqlwks-0.2.0/doc/PLUGIN_CATALOG.md +193 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/__init__.py +1 -1
- plsqlwks-0.2.0/plsqlwks/db/dependencies.py +151 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/db/execution.py +33 -3
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/db/models.py +3 -0
- plsqlwks-0.2.0/plsqlwks/db/timestamps.py +131 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/plugins/api.py +13 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/app.py +49 -2
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/buffer.py +6 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/commands.py +1 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/constants.py +79 -8
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/db_operations.py +4 -3
- plsqlwks-0.2.0/plsqlwks/ui/dependency_walker.py +290 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/display.py +34 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/errors.py +1 -1
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/key_reader.py +51 -7
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/keys.py +59 -61
- plsqlwks-0.2.0/plsqlwks/ui/output_selection.py +163 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/plugin_host.py +18 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/renderer.py +50 -22
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/result_controller.py +42 -0
- plsqlwks-0.2.0/plsqlwks/ui/sqlplus.py +182 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/state.py +2 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/viewport.py +28 -4
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks.egg-info/SOURCES.txt +16 -2
- plsqlwks-0.2.0/plugins/dependencies-walker/install.plw +7 -0
- plsqlwks-0.2.0/plugins/dependencies-walker/payload/plugin.py +22 -0
- plsqlwks-0.2.0/plugins/packages/dependencies-walker-0.1.0.plwgn +0 -0
- plsqlwks-0.2.0/plugins/packages/sqlplus-0.1.0.plwgn +0 -0
- plsqlwks-0.2.0/plugins/sqlplus/install.plw +7 -0
- plsqlwks-0.2.0/plugins/sqlplus/payload/__init__.py +0 -0
- plsqlwks-0.2.0/plugins/sqlplus/payload/plugin.py +22 -0
- plsqlwks-0.2.0/plugins/xlsx-export/payload/__init__.py +0 -0
- plsqlwks-0.2.0/tools/putty_keys.ps1 +286 -0
- plsqlwks-0.2.0/tools/windows_keys.cmd +4 -0
- plsqlwks-0.1.9.0/MANIFEST.in +0 -116
- plsqlwks-0.1.9.0/doc/PLUGIN_CATALOG.md +0 -100
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/doc/ARCHITECTURE.md +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/doc/QUICKSTART.html +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/doc/QUICKSTART.md +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/license.txt +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/__main__.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/cli.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/config/__init__.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/config/loader.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/config/models.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/config/paths.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/config/session.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/config/settings.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/db/__init__.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/db/editing.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/db/explain.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/db/health.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/db/identifiers.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/db/metadata.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/db/session.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/db/sql_analysis.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/db/transactions.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/exporting.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/plugins/__init__.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/plugins/loader.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/plugins/management.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/sqlbinds.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/sqlsplit.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/__init__.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/application_controller.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/browser.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/catalog.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/clipboard.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/code_generation.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/command_dispatcher.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/completion.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/db_session.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/db_worker.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/dialogs.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/documents.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/editor_controller.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/help.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/input_controller.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/menu.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/ports.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/query_controller.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/result_export.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/result_presenter.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/results.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/sql.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/ui/syntax.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plsqlwks/workspace.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plugins/csv-export/install.plw +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plugins/csv-export/payload/__init__.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plugins/csv-export/payload/plugin.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plugins/csv-export/payload/support.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plugins/csv-export/payload/writer.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plugins/csv2oratab/install.plw +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plugins/csv2oratab/payload/__init__.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plugins/csv2oratab/payload/csv2oratab.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plugins/csv2oratab/payload/plugin.py +0 -0
- {plsqlwks-0.1.9.0/plugins/html-export → plsqlwks-0.2.0/plugins/dependencies-walker}/payload/__init__.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plugins/html-export/install.plw +0 -0
- {plsqlwks-0.1.9.0/plugins/xlsx-export → plsqlwks-0.2.0/plugins/html-export}/payload/__init__.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plugins/html-export/payload/html_exporting.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plugins/html-export/payload/plugin.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plugins/html-export/payload/support.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plugins/html-export/payload/writer.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plugins/packages/csv-export-1.0.0.plwgn +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plugins/packages/csv2oratab-0.1.0.plwgn +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plugins/packages/html-export-1.0.0.plwgn +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plugins/packages/xlsx-export-1.0.0.plwgn +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plugins/xlsx-export/install.plw +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plugins/xlsx-export/payload/plugin.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plugins/xlsx-export/payload/support.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/plugins/xlsx-export/payload/xlsx_exporting.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/pyproject.toml +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/pytest.ini +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/rchar.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/requirements.txt +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/setup.cfg +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/tests/conftest.py +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/tests/fixtures/config_exports.txt +0 -0
- {plsqlwks-0.1.9.0 → plsqlwks-0.2.0}/tests/fixtures/ui_exports.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: plsqlwks
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: An ncurses SQL and PL/SQL workspace for Oracle databases.
|
|
5
5
|
Author: unu2000
|
|
6
6
|
License-Expression: LicenseRef-plsqlwks-Donationware
|
|
@@ -488,6 +488,149 @@ plsqlwks and asks whether to overwrite it, save under another name, or cancel.
|
|
|
488
488
|
Undo and redo update the unsaved-change marker by comparing the current content
|
|
489
489
|
with the last successful save.
|
|
490
490
|
|
|
491
|
+
## Windows PuTTY keyboard setup
|
|
492
|
+
|
|
493
|
+
For Windows PuTTY 0.83 and 0.85, use a saved session with these settings before
|
|
494
|
+
starting plsqlwks on the Linux/Unix host:
|
|
495
|
+
|
|
496
|
+
| PuTTY panel | Setting |
|
|
497
|
+
| --- | --- |
|
|
498
|
+
| Connection → Data | Terminal-type string: `xterm-256color` |
|
|
499
|
+
| Window → Translation | Remote character set: `UTF-8` |
|
|
500
|
+
| Terminal → Keyboard | Backspace: `Control-? (127)`; Home/End: `Standard` |
|
|
501
|
+
| Terminal → Keyboard | Function keys and keypad: `Xterm 216+` |
|
|
502
|
+
| Terminal → Keyboard | Shifted arrow keys: `xterm-style bitmap` |
|
|
503
|
+
| Terminal → Keyboard | Keep **Control-Alt is different from AltGr** enabled |
|
|
504
|
+
| Terminal → Features | Enable **Disable application cursor keys mode** and **Disable application keypad mode** |
|
|
505
|
+
| Terminal → Features | Leave **Disable bracketed paste mode** unchecked |
|
|
506
|
+
| Terminal | Local echo and local line editing: `Force off` |
|
|
507
|
+
|
|
508
|
+
Save the session and use a UTF-8 locale on the host. Disabling application cursor
|
|
509
|
+
keys is necessary because curses enables that mode, and PuTTY otherwise drops
|
|
510
|
+
arrow modifiers even when bitmap mode is selected.
|
|
511
|
+
|
|
512
|
+
### Exact Ctrl shortcuts with the Windows helper
|
|
513
|
+
|
|
514
|
+
Stock Windows PuTTY does not send Ctrl-Home/End, Ctrl-Shift-Home/End, or
|
|
515
|
+
Ctrl-Delete at all, and consumes modified PageUp/PageDown for scrollback.
|
|
516
|
+
Use the optional [Windows helper](tools/putty_keys.ps1) to make the original
|
|
517
|
+
shortcuts work. Run it on the **Windows computer running PuTTY**; from a checkout:
|
|
518
|
+
|
|
519
|
+
```powershell
|
|
520
|
+
powershell.exe -NoProfile -File .\tools\putty_keys.ps1
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
Focus the PuTTY window running plsqlwks, then press **Ctrl-Alt-F12** to enable
|
|
524
|
+
remapping for that window. The helper console confirms activation. It remaps
|
|
525
|
+
one selected PuTTY window while the helper is running. Press Ctrl-Alt-F12 again
|
|
526
|
+
to disable it before using another program in that terminal, or press Ctrl-C
|
|
527
|
+
in the helper console to stop it. Enabling a different PuTTY window switches
|
|
528
|
+
the selection to that window.
|
|
529
|
+
|
|
530
|
+
With the helper enabled, `Ctrl-Home` / `Ctrl-End` move to the beginning/end of
|
|
531
|
+
the editor buffer or the first/last result row. `Ctrl-Shift-Home` /
|
|
532
|
+
`Ctrl-Shift-End` select to buffer boundaries. The helper also restores
|
|
533
|
+
`Ctrl-Delete`, `Ctrl-Backspace`, `Ctrl-Enter`, `Ctrl-PageUp` / `Ctrl-PageDown`,
|
|
534
|
+
`Shift-PageUp` / `Shift-PageDown`, and `Ctrl+=`. Plain Enter and Backspace keep
|
|
535
|
+
their normal meaning. The helper requires only Windows PowerShell and its
|
|
536
|
+
included .NET runtime; it requires no administrator rights or installation.
|
|
537
|
+
Run the same command with `-SelfTest` to check its mappings without enabling it.
|
|
538
|
+
|
|
539
|
+
### Alternatives without the helper
|
|
540
|
+
|
|
541
|
+
Some physical combinations cannot reach plsqlwks distinctly in stock Windows
|
|
542
|
+
PuTTY. Use the following alternatives; they also work in terminals that send
|
|
543
|
+
these sequences, and the original bindings remain available elsewhere:
|
|
544
|
+
|
|
545
|
+
| Existing shortcut | PuTTY alternative | Action |
|
|
546
|
+
| --- | --- | --- |
|
|
547
|
+
| `Ctrl-Home` / `Ctrl-End` | `Alt-Home` / `Alt-End` | Editor buffer start/end; first/last result row |
|
|
548
|
+
| `Ctrl-Shift-Home` / `Ctrl-Shift-End` | `Alt-Shift-Home` / `Alt-Shift-End` | Select to editor buffer boundaries |
|
|
549
|
+
| `Ctrl-Delete` | `Alt-Delete` | Delete next word |
|
|
550
|
+
| `Ctrl-Enter` | `F5` or `Alt-X` | Execute selection/current statement |
|
|
551
|
+
| `Ctrl-PageUp` / `Ctrl-PageDown` | `Alt-PageUp` / `Alt-PageDown` | Page focused results; otherwise switch file tabs |
|
|
552
|
+
| `Shift-PageUp` / `Shift-PageDown` | `Ctrl-Shift-Up` / `Ctrl-Shift-Down` | Extend editor selection by page |
|
|
553
|
+
| `Ctrl-Backspace` | `Alt-Backspace` | Delete previous word |
|
|
554
|
+
| `Ctrl+=` | `Alt-O` → **Database** → **Reconnect** | Reconnect |
|
|
555
|
+
|
|
556
|
+
PuTTY sends the same carriage return for Enter and Ctrl-Enter, and the same
|
|
557
|
+
DEL byte for Backspace and Ctrl-Backspace. plsqlwks preserves newline and
|
|
558
|
+
single-character deletion for those bytes. PuTTY consumes Ctrl/Shift-PageUp
|
|
559
|
+
and PageDown for its own scrollback; changing the function-key setting does
|
|
560
|
+
not free them. See the [PuTTY keyboard settings](https://the.earth.li/~sgtatham/putty/0.85/htmldoc/Chapter4.html#config-keyboard)
|
|
561
|
+
and [scrollback shortcuts](https://the.earth.li/~sgtatham/putty/0.85/htmldoc/Chapter3.html#using-scrollback).
|
|
562
|
+
|
|
563
|
+
Use left Alt for application shortcuts; AltGr remains available for characters
|
|
564
|
+
on international keyboards. Shortcut digits and symbols refer to the character
|
|
565
|
+
on the active Windows layout: for example, Czech top-row digits need Shift,
|
|
566
|
+
so Alt-1 is typed with Alt-Shift-1. Use the layout's `+` or `=` character for
|
|
567
|
+
autocomplete refresh. `Ctrl-C`, `Ctrl-X`, and `Ctrl-V` operate on the
|
|
568
|
+
application/host clipboard with the existing internal fallback. SSH does not
|
|
569
|
+
make that the Windows clipboard. Use PuTTY's native paste (`Shift-Insert` or
|
|
570
|
+
right-click) to insert Windows clipboard text as bracketed paste, and PuTTY
|
|
571
|
+
mouse selection to copy to Windows. Leave plsqlwks' Ctrl-letter shortcuts
|
|
572
|
+
available to the server when customizing PuTTY clipboard settings.
|
|
573
|
+
|
|
574
|
+
For troubleshooting, run `python3 rchar.py` from the checkout in the same PuTTY
|
|
575
|
+
session to capture a key's actual bytes. Verify the session settings above
|
|
576
|
+
before reporting a shortcut failure.
|
|
577
|
+
|
|
578
|
+
## Windows Command Prompt keyboard setup
|
|
579
|
+
|
|
580
|
+
Use plsqlwks through `ssh.exe` or WSL inside **Command Prompt (`cmd.exe`)**.
|
|
581
|
+
The helper supports both the classic Windows console and Command Prompt hosted
|
|
582
|
+
by Windows Terminal. plsqlwks itself runs on the Linux/Unix host or inside WSL,
|
|
583
|
+
where Python provides curses.
|
|
584
|
+
|
|
585
|
+
In one Command Prompt window, connect to the host or start WSL:
|
|
586
|
+
|
|
587
|
+
```bat
|
|
588
|
+
ssh user@host
|
|
589
|
+
```
|
|
590
|
+
|
|
591
|
+
or:
|
|
592
|
+
|
|
593
|
+
```bat
|
|
594
|
+
wsl.exe
|
|
595
|
+
```
|
|
596
|
+
|
|
597
|
+
Then run the installed application in that Linux/Unix shell:
|
|
598
|
+
|
|
599
|
+
```sh
|
|
600
|
+
TERM=xterm-256color plsqlwks
|
|
601
|
+
```
|
|
602
|
+
|
|
603
|
+
In a **second Command Prompt window**, start the Windows helper from the checkout:
|
|
604
|
+
|
|
605
|
+
```bat
|
|
606
|
+
tools\windows_keys.cmd
|
|
607
|
+
```
|
|
608
|
+
|
|
609
|
+
Keep that helper window open. Focus the terminal running plsqlwks and press
|
|
610
|
+
**Ctrl-Alt-F12**; the helper confirms activation. The original shortcuts now
|
|
611
|
+
reach the application, including **Ctrl-Home/End**, **Ctrl-Shift-Home/End**,
|
|
612
|
+
modified arrows, word deletion, execution, paging, and `Ctrl+=`. `F11` executes
|
|
613
|
+
the script instead of switching Windows Terminal to fullscreen.
|
|
614
|
+
|
|
615
|
+
Use a dedicated terminal window for plsqlwks. The helper selects a window, so
|
|
616
|
+
disable it with Ctrl-Alt-F12 before switching that window to another tab, pane,
|
|
617
|
+
or program. Press Ctrl-C in the helper window to stop it. Left Alt is used for
|
|
618
|
+
shortcuts; AltGr remains available for typing. Leave the classic console's
|
|
619
|
+
**Use legacy console** option off. Use a UTF-8 locale on the Linux/Unix host.
|
|
620
|
+
|
|
621
|
+
For Windows Terminal, set `"altGrAliasing": false` in the Command Prompt
|
|
622
|
+
profile in its JSON settings. This keeps left Ctrl-Alt-C/R available for
|
|
623
|
+
commit/rollback on international keyboards while preserving the real AltGr
|
|
624
|
+
key. See Microsoft's [AltGr aliasing setting](https://learn.microsoft.com/en-us/windows/terminal/customize-settings/profile-advanced#altgr-aliasing).
|
|
625
|
+
|
|
626
|
+
The `.cmd` launcher uses the included Windows PowerShell runtime and applies
|
|
627
|
+
its script execution policy only to that helper process. No administrator
|
|
628
|
+
rights, installation, or permanent policy change is needed. Keep
|
|
629
|
+
`windows_keys.cmd` and `putty_keys.ps1` together when copying them elsewhere.
|
|
630
|
+
Run `tools\windows_keys.cmd -SelfTest` to check the helper without enabling it.
|
|
631
|
+
The original `powershell.exe -NoProfile -File .\tools\putty_keys.ps1` command
|
|
632
|
+
also works from Command Prompt and continues to support PuTTY.
|
|
633
|
+
|
|
491
634
|
## Keys
|
|
492
635
|
|
|
493
636
|
### Global
|
|
@@ -716,6 +859,19 @@ current Thin driver.
|
|
|
716
859
|
Displayed CLOB and BLOB values are limited to the first 65,536 characters or
|
|
717
860
|
bytes and include a truncation marker with the full size. Truncated LOB cells
|
|
718
861
|
cannot be edited safely. Schema-browser DDL is always read in full.
|
|
862
|
+
To copy DBMS_OUTPUT, show it with **F6** and focus it with **Tab**. Use
|
|
863
|
+
**Shift+navigation** to select text and **Ctrl+C** to copy; **Ctrl+A** selects
|
|
864
|
+
all output. **Alt-O -> Results -> Copy all DBMS_OUTPUT** also copies the whole
|
|
865
|
+
buffer while another pane is focused. Tab/Esc returns to the editor. Home/End
|
|
866
|
+
move within a displayed line; Ctrl+Home/End move to the output boundaries.
|
|
867
|
+
|
|
868
|
+
Copying preserves the stored text, whitespace, blank lines, and statement
|
|
869
|
+
headings, without screen wrapping or padding. The existing system clipboard
|
|
870
|
+
providers are used when available, with the internal clipboard as a fallback
|
|
871
|
+
(including remote PuTTY sessions). Ctrl+C still cancels a running operation
|
|
872
|
+
before performing a copy. Selection belongs to its file tab, survives appended
|
|
873
|
+
output and resizing, and resets when execution replaces the output.
|
|
874
|
+
|
|
719
875
|
DBMS_OUTPUT is collected after each statement and after every fetched result
|
|
720
876
|
page without replacing a real query grid. Output-read or cursor-cleanup failures
|
|
721
877
|
are displayed as warnings while preserving successfully fetched rows. PL/SQL
|
|
@@ -980,6 +1136,27 @@ lifecycle change requires a restart. See the
|
|
|
980
1136
|
[managed-package guide](https://gitlab.com/unununu/plsqlwks/-/blob/main/doc/PLUGINS.md#managed-plugin-packages)
|
|
981
1137
|
for the exact manifest, source layout, validation, replacement, and trust rules.
|
|
982
1138
|
|
|
1139
|
+
### Dependencies walker
|
|
1140
|
+
|
|
1141
|
+
Install the optional dependency browser and restart PLSQLWKS:
|
|
1142
|
+
|
|
1143
|
+
```bash
|
|
1144
|
+
plsqlwks plugin install plugins/packages/dependencies-walker-0.1.0.plwgn
|
|
1145
|
+
```
|
|
1146
|
+
|
|
1147
|
+
Choose **Alt-O -> Database -> Dependencies walker** and enter an object name,
|
|
1148
|
+
optionally qualified by schema. Expand with Enter/Right, collapse with Left,
|
|
1149
|
+
and use **D** (Depends on) or **U** (Used by) to follow the selected object in
|
|
1150
|
+
either direction. Backspace restores the previous tree; **R** refreshes and
|
|
1151
|
+
Esc closes. Packages combine specification/body relationships with labels.
|
|
1152
|
+
|
|
1153
|
+
The walker reads only visible Oracle-recorded dependencies, loads branches
|
|
1154
|
+
on demand, marks cycles, and leaves database-link references unexpanded.
|
|
1155
|
+
Dynamic SQL and foreign-key graphs are outside this view. See the
|
|
1156
|
+
[plugin catalog](https://gitlab.com/unununu/plsqlwks/-/blob/main/doc/PLUGIN_CATALOG.md#dependencies-walker)
|
|
1157
|
+
for all controls and installation details. No additional runtime dependency is
|
|
1158
|
+
required.
|
|
1159
|
+
|
|
983
1160
|
### Maintained csv2oratab integration
|
|
984
1161
|
|
|
985
1162
|
The maintained `csv2oratab-0.1.0.plwgn` catalog package adds **Alt-O -> Data ->
|
|
@@ -454,6 +454,149 @@ plsqlwks and asks whether to overwrite it, save under another name, or cancel.
|
|
|
454
454
|
Undo and redo update the unsaved-change marker by comparing the current content
|
|
455
455
|
with the last successful save.
|
|
456
456
|
|
|
457
|
+
## Windows PuTTY keyboard setup
|
|
458
|
+
|
|
459
|
+
For Windows PuTTY 0.83 and 0.85, use a saved session with these settings before
|
|
460
|
+
starting plsqlwks on the Linux/Unix host:
|
|
461
|
+
|
|
462
|
+
| PuTTY panel | Setting |
|
|
463
|
+
| --- | --- |
|
|
464
|
+
| Connection → Data | Terminal-type string: `xterm-256color` |
|
|
465
|
+
| Window → Translation | Remote character set: `UTF-8` |
|
|
466
|
+
| Terminal → Keyboard | Backspace: `Control-? (127)`; Home/End: `Standard` |
|
|
467
|
+
| Terminal → Keyboard | Function keys and keypad: `Xterm 216+` |
|
|
468
|
+
| Terminal → Keyboard | Shifted arrow keys: `xterm-style bitmap` |
|
|
469
|
+
| Terminal → Keyboard | Keep **Control-Alt is different from AltGr** enabled |
|
|
470
|
+
| Terminal → Features | Enable **Disable application cursor keys mode** and **Disable application keypad mode** |
|
|
471
|
+
| Terminal → Features | Leave **Disable bracketed paste mode** unchecked |
|
|
472
|
+
| Terminal | Local echo and local line editing: `Force off` |
|
|
473
|
+
|
|
474
|
+
Save the session and use a UTF-8 locale on the host. Disabling application cursor
|
|
475
|
+
keys is necessary because curses enables that mode, and PuTTY otherwise drops
|
|
476
|
+
arrow modifiers even when bitmap mode is selected.
|
|
477
|
+
|
|
478
|
+
### Exact Ctrl shortcuts with the Windows helper
|
|
479
|
+
|
|
480
|
+
Stock Windows PuTTY does not send Ctrl-Home/End, Ctrl-Shift-Home/End, or
|
|
481
|
+
Ctrl-Delete at all, and consumes modified PageUp/PageDown for scrollback.
|
|
482
|
+
Use the optional [Windows helper](tools/putty_keys.ps1) to make the original
|
|
483
|
+
shortcuts work. Run it on the **Windows computer running PuTTY**; from a checkout:
|
|
484
|
+
|
|
485
|
+
```powershell
|
|
486
|
+
powershell.exe -NoProfile -File .\tools\putty_keys.ps1
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
Focus the PuTTY window running plsqlwks, then press **Ctrl-Alt-F12** to enable
|
|
490
|
+
remapping for that window. The helper console confirms activation. It remaps
|
|
491
|
+
one selected PuTTY window while the helper is running. Press Ctrl-Alt-F12 again
|
|
492
|
+
to disable it before using another program in that terminal, or press Ctrl-C
|
|
493
|
+
in the helper console to stop it. Enabling a different PuTTY window switches
|
|
494
|
+
the selection to that window.
|
|
495
|
+
|
|
496
|
+
With the helper enabled, `Ctrl-Home` / `Ctrl-End` move to the beginning/end of
|
|
497
|
+
the editor buffer or the first/last result row. `Ctrl-Shift-Home` /
|
|
498
|
+
`Ctrl-Shift-End` select to buffer boundaries. The helper also restores
|
|
499
|
+
`Ctrl-Delete`, `Ctrl-Backspace`, `Ctrl-Enter`, `Ctrl-PageUp` / `Ctrl-PageDown`,
|
|
500
|
+
`Shift-PageUp` / `Shift-PageDown`, and `Ctrl+=`. Plain Enter and Backspace keep
|
|
501
|
+
their normal meaning. The helper requires only Windows PowerShell and its
|
|
502
|
+
included .NET runtime; it requires no administrator rights or installation.
|
|
503
|
+
Run the same command with `-SelfTest` to check its mappings without enabling it.
|
|
504
|
+
|
|
505
|
+
### Alternatives without the helper
|
|
506
|
+
|
|
507
|
+
Some physical combinations cannot reach plsqlwks distinctly in stock Windows
|
|
508
|
+
PuTTY. Use the following alternatives; they also work in terminals that send
|
|
509
|
+
these sequences, and the original bindings remain available elsewhere:
|
|
510
|
+
|
|
511
|
+
| Existing shortcut | PuTTY alternative | Action |
|
|
512
|
+
| --- | --- | --- |
|
|
513
|
+
| `Ctrl-Home` / `Ctrl-End` | `Alt-Home` / `Alt-End` | Editor buffer start/end; first/last result row |
|
|
514
|
+
| `Ctrl-Shift-Home` / `Ctrl-Shift-End` | `Alt-Shift-Home` / `Alt-Shift-End` | Select to editor buffer boundaries |
|
|
515
|
+
| `Ctrl-Delete` | `Alt-Delete` | Delete next word |
|
|
516
|
+
| `Ctrl-Enter` | `F5` or `Alt-X` | Execute selection/current statement |
|
|
517
|
+
| `Ctrl-PageUp` / `Ctrl-PageDown` | `Alt-PageUp` / `Alt-PageDown` | Page focused results; otherwise switch file tabs |
|
|
518
|
+
| `Shift-PageUp` / `Shift-PageDown` | `Ctrl-Shift-Up` / `Ctrl-Shift-Down` | Extend editor selection by page |
|
|
519
|
+
| `Ctrl-Backspace` | `Alt-Backspace` | Delete previous word |
|
|
520
|
+
| `Ctrl+=` | `Alt-O` → **Database** → **Reconnect** | Reconnect |
|
|
521
|
+
|
|
522
|
+
PuTTY sends the same carriage return for Enter and Ctrl-Enter, and the same
|
|
523
|
+
DEL byte for Backspace and Ctrl-Backspace. plsqlwks preserves newline and
|
|
524
|
+
single-character deletion for those bytes. PuTTY consumes Ctrl/Shift-PageUp
|
|
525
|
+
and PageDown for its own scrollback; changing the function-key setting does
|
|
526
|
+
not free them. See the [PuTTY keyboard settings](https://the.earth.li/~sgtatham/putty/0.85/htmldoc/Chapter4.html#config-keyboard)
|
|
527
|
+
and [scrollback shortcuts](https://the.earth.li/~sgtatham/putty/0.85/htmldoc/Chapter3.html#using-scrollback).
|
|
528
|
+
|
|
529
|
+
Use left Alt for application shortcuts; AltGr remains available for characters
|
|
530
|
+
on international keyboards. Shortcut digits and symbols refer to the character
|
|
531
|
+
on the active Windows layout: for example, Czech top-row digits need Shift,
|
|
532
|
+
so Alt-1 is typed with Alt-Shift-1. Use the layout's `+` or `=` character for
|
|
533
|
+
autocomplete refresh. `Ctrl-C`, `Ctrl-X`, and `Ctrl-V` operate on the
|
|
534
|
+
application/host clipboard with the existing internal fallback. SSH does not
|
|
535
|
+
make that the Windows clipboard. Use PuTTY's native paste (`Shift-Insert` or
|
|
536
|
+
right-click) to insert Windows clipboard text as bracketed paste, and PuTTY
|
|
537
|
+
mouse selection to copy to Windows. Leave plsqlwks' Ctrl-letter shortcuts
|
|
538
|
+
available to the server when customizing PuTTY clipboard settings.
|
|
539
|
+
|
|
540
|
+
For troubleshooting, run `python3 rchar.py` from the checkout in the same PuTTY
|
|
541
|
+
session to capture a key's actual bytes. Verify the session settings above
|
|
542
|
+
before reporting a shortcut failure.
|
|
543
|
+
|
|
544
|
+
## Windows Command Prompt keyboard setup
|
|
545
|
+
|
|
546
|
+
Use plsqlwks through `ssh.exe` or WSL inside **Command Prompt (`cmd.exe`)**.
|
|
547
|
+
The helper supports both the classic Windows console and Command Prompt hosted
|
|
548
|
+
by Windows Terminal. plsqlwks itself runs on the Linux/Unix host or inside WSL,
|
|
549
|
+
where Python provides curses.
|
|
550
|
+
|
|
551
|
+
In one Command Prompt window, connect to the host or start WSL:
|
|
552
|
+
|
|
553
|
+
```bat
|
|
554
|
+
ssh user@host
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
or:
|
|
558
|
+
|
|
559
|
+
```bat
|
|
560
|
+
wsl.exe
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
Then run the installed application in that Linux/Unix shell:
|
|
564
|
+
|
|
565
|
+
```sh
|
|
566
|
+
TERM=xterm-256color plsqlwks
|
|
567
|
+
```
|
|
568
|
+
|
|
569
|
+
In a **second Command Prompt window**, start the Windows helper from the checkout:
|
|
570
|
+
|
|
571
|
+
```bat
|
|
572
|
+
tools\windows_keys.cmd
|
|
573
|
+
```
|
|
574
|
+
|
|
575
|
+
Keep that helper window open. Focus the terminal running plsqlwks and press
|
|
576
|
+
**Ctrl-Alt-F12**; the helper confirms activation. The original shortcuts now
|
|
577
|
+
reach the application, including **Ctrl-Home/End**, **Ctrl-Shift-Home/End**,
|
|
578
|
+
modified arrows, word deletion, execution, paging, and `Ctrl+=`. `F11` executes
|
|
579
|
+
the script instead of switching Windows Terminal to fullscreen.
|
|
580
|
+
|
|
581
|
+
Use a dedicated terminal window for plsqlwks. The helper selects a window, so
|
|
582
|
+
disable it with Ctrl-Alt-F12 before switching that window to another tab, pane,
|
|
583
|
+
or program. Press Ctrl-C in the helper window to stop it. Left Alt is used for
|
|
584
|
+
shortcuts; AltGr remains available for typing. Leave the classic console's
|
|
585
|
+
**Use legacy console** option off. Use a UTF-8 locale on the Linux/Unix host.
|
|
586
|
+
|
|
587
|
+
For Windows Terminal, set `"altGrAliasing": false` in the Command Prompt
|
|
588
|
+
profile in its JSON settings. This keeps left Ctrl-Alt-C/R available for
|
|
589
|
+
commit/rollback on international keyboards while preserving the real AltGr
|
|
590
|
+
key. See Microsoft's [AltGr aliasing setting](https://learn.microsoft.com/en-us/windows/terminal/customize-settings/profile-advanced#altgr-aliasing).
|
|
591
|
+
|
|
592
|
+
The `.cmd` launcher uses the included Windows PowerShell runtime and applies
|
|
593
|
+
its script execution policy only to that helper process. No administrator
|
|
594
|
+
rights, installation, or permanent policy change is needed. Keep
|
|
595
|
+
`windows_keys.cmd` and `putty_keys.ps1` together when copying them elsewhere.
|
|
596
|
+
Run `tools\windows_keys.cmd -SelfTest` to check the helper without enabling it.
|
|
597
|
+
The original `powershell.exe -NoProfile -File .\tools\putty_keys.ps1` command
|
|
598
|
+
also works from Command Prompt and continues to support PuTTY.
|
|
599
|
+
|
|
457
600
|
## Keys
|
|
458
601
|
|
|
459
602
|
### Global
|
|
@@ -682,6 +825,19 @@ current Thin driver.
|
|
|
682
825
|
Displayed CLOB and BLOB values are limited to the first 65,536 characters or
|
|
683
826
|
bytes and include a truncation marker with the full size. Truncated LOB cells
|
|
684
827
|
cannot be edited safely. Schema-browser DDL is always read in full.
|
|
828
|
+
To copy DBMS_OUTPUT, show it with **F6** and focus it with **Tab**. Use
|
|
829
|
+
**Shift+navigation** to select text and **Ctrl+C** to copy; **Ctrl+A** selects
|
|
830
|
+
all output. **Alt-O -> Results -> Copy all DBMS_OUTPUT** also copies the whole
|
|
831
|
+
buffer while another pane is focused. Tab/Esc returns to the editor. Home/End
|
|
832
|
+
move within a displayed line; Ctrl+Home/End move to the output boundaries.
|
|
833
|
+
|
|
834
|
+
Copying preserves the stored text, whitespace, blank lines, and statement
|
|
835
|
+
headings, without screen wrapping or padding. The existing system clipboard
|
|
836
|
+
providers are used when available, with the internal clipboard as a fallback
|
|
837
|
+
(including remote PuTTY sessions). Ctrl+C still cancels a running operation
|
|
838
|
+
before performing a copy. Selection belongs to its file tab, survives appended
|
|
839
|
+
output and resizing, and resets when execution replaces the output.
|
|
840
|
+
|
|
685
841
|
DBMS_OUTPUT is collected after each statement and after every fetched result
|
|
686
842
|
page without replacing a real query grid. Output-read or cursor-cleanup failures
|
|
687
843
|
are displayed as warnings while preserving successfully fetched rows. PL/SQL
|
|
@@ -946,6 +1102,27 @@ lifecycle change requires a restart. See the
|
|
|
946
1102
|
[managed-package guide](https://gitlab.com/unununu/plsqlwks/-/blob/main/doc/PLUGINS.md#managed-plugin-packages)
|
|
947
1103
|
for the exact manifest, source layout, validation, replacement, and trust rules.
|
|
948
1104
|
|
|
1105
|
+
### Dependencies walker
|
|
1106
|
+
|
|
1107
|
+
Install the optional dependency browser and restart PLSQLWKS:
|
|
1108
|
+
|
|
1109
|
+
```bash
|
|
1110
|
+
plsqlwks plugin install plugins/packages/dependencies-walker-0.1.0.plwgn
|
|
1111
|
+
```
|
|
1112
|
+
|
|
1113
|
+
Choose **Alt-O -> Database -> Dependencies walker** and enter an object name,
|
|
1114
|
+
optionally qualified by schema. Expand with Enter/Right, collapse with Left,
|
|
1115
|
+
and use **D** (Depends on) or **U** (Used by) to follow the selected object in
|
|
1116
|
+
either direction. Backspace restores the previous tree; **R** refreshes and
|
|
1117
|
+
Esc closes. Packages combine specification/body relationships with labels.
|
|
1118
|
+
|
|
1119
|
+
The walker reads only visible Oracle-recorded dependencies, loads branches
|
|
1120
|
+
on demand, marks cycles, and leaves database-link references unexpanded.
|
|
1121
|
+
Dynamic SQL and foreign-key graphs are outside this view. See the
|
|
1122
|
+
[plugin catalog](https://gitlab.com/unununu/plsqlwks/-/blob/main/doc/PLUGIN_CATALOG.md#dependencies-walker)
|
|
1123
|
+
for all controls and installation details. No additional runtime dependency is
|
|
1124
|
+
required.
|
|
1125
|
+
|
|
949
1126
|
### Maintained csv2oratab integration
|
|
950
1127
|
|
|
951
1128
|
The maintained `csv2oratab-0.1.0.plwgn` catalog package adds **Alt-O -> Data ->
|
|
@@ -189,6 +189,8 @@ class PluginContext(Protocol):
|
|
|
189
189
|
def get_suggested_table(self) -> str: ...
|
|
190
190
|
def start_result_export(self, request: ResultExportRequest) -> None: ...
|
|
191
191
|
def start_code_generation(self, request: CodeGenerationRequest) -> None: ...
|
|
192
|
+
def start_dependency_walk(self) -> None: ...
|
|
193
|
+
def start_sqlplus(self, executable: str = "sqlplus") -> None: ...
|
|
192
194
|
```
|
|
193
195
|
|
|
194
196
|
- `results_dir` is the configured result-file directory.
|
|
@@ -216,6 +218,12 @@ class PluginContext(Protocol):
|
|
|
216
218
|
default and must still be validated through a host-managed request.
|
|
217
219
|
- `start_result_export()` and `start_code_generation()` transfer work to the
|
|
218
220
|
workflows below.
|
|
221
|
+
- `start_dependency_walk()` opens the host-managed dependency walker described
|
|
222
|
+
below. It takes no database objects or callbacks and returns immediately after
|
|
223
|
+
the initial object prompt, before asynchronous metadata work completes.
|
|
224
|
+
- `start_sqlplus(executable="sqlplus")` runs the host-managed interactive
|
|
225
|
+
SQL*Plus launcher described below. It returns after SQL*Plus exits and the
|
|
226
|
+
user presses a key to return to PLSQLWKS.
|
|
219
227
|
|
|
220
228
|
Context properties and synchronous UI methods belong to the handler/UI thread.
|
|
221
229
|
Do not call a saved context from an export writer or another plugin-created
|
|
@@ -524,6 +532,27 @@ def generate_select(context: PluginContext) -> None:
|
|
|
524
532
|
ordinary exceptions are also reported through the plugin error UI. The exact
|
|
525
533
|
wording of either presentation is not part of the API.
|
|
526
534
|
|
|
535
|
+
## Dependency walking
|
|
536
|
+
|
|
537
|
+
`PluginContext.start_dependency_walk()` is an additive API v1 capability. The
|
|
538
|
+
host prompts for `OBJECT` or `SCHEMA.OBJECT`, suggests the selected schema-browser
|
|
539
|
+
object when available, resolves quoted identifiers and ambiguous types, then
|
|
540
|
+
opens a keyboard-driven dependency tree. Metadata reads use the initiating
|
|
541
|
+
tab's session and its normal worker/cancellation mechanism. Closing the walker
|
|
542
|
+
preserves the editor, result table, and output; no transaction is committed or
|
|
543
|
+
rolled back by the walker.
|
|
544
|
+
|
|
545
|
+
The tree follows visible `ALL_DEPENDENCIES` relationships in either direction.
|
|
546
|
+
Package specifications and bodies share a node with labeled edges. Expansion
|
|
547
|
+
loads one page at a time; cycles and remote references are leaves. The host
|
|
548
|
+
does not expose SQL, cursors, or a general-purpose job or UI interface to the
|
|
549
|
+
plugin. See the [catalog guide](PLUGIN_CATALOG.md#dependencies-walker) for keys,
|
|
550
|
+
visibility limits, and installation.
|
|
551
|
+
|
|
552
|
+
A plugin using this added public method may check whether it is callable and
|
|
553
|
+
report an upgrade requirement on older hosts. Existing API v1 plugins need no
|
|
554
|
+
changes.
|
|
555
|
+
|
|
527
556
|
## Managed packages and lifecycle
|
|
528
557
|
|
|
529
558
|
Managed packages provide offline distribution for the same API-v1 factories.
|
|
@@ -619,17 +648,52 @@ access process data, perform I/O, and otherwise act with the user's authority.
|
|
|
619
648
|
Review source and verify provenance before installing, and keep secrets out of
|
|
620
649
|
plugin settings when code from another publisher can run in the same process.
|
|
621
650
|
|
|
651
|
+
## SQL*Plus launching
|
|
652
|
+
|
|
653
|
+
`PluginContext.start_sqlplus(executable="sqlplus")` is an additive API v1
|
|
654
|
+
capability. The host requires a connected active session and no database
|
|
655
|
+
operation running in any tab. It reads the loaded configuration's username,
|
|
656
|
+
DSN, and password file, then launches the selected executable directly, without
|
|
657
|
+
a shell, in the workspace directory. An executable name is resolved through
|
|
658
|
+
`PATH`; a path selects a particular client. Credentials never enter the plugin
|
|
659
|
+
context or process arguments. A private temporary symlink gives SQL*Plus access
|
|
660
|
+
to a startup script through an inherited pipe; no password-bearing regular
|
|
661
|
+
file is created.
|
|
662
|
+
|
|
663
|
+
The host suspends curses and keyboard reporting, leaves SQL*Plus in control of
|
|
664
|
+
the terminal, and handles Ctrl+C without closing PLSQLWKS. After SQL*Plus exits,
|
|
665
|
+
including on login failure, its output remains visible until a fresh keypress
|
|
666
|
+
(no Enter needed). Terminal modes and the workspace display are restored on
|
|
667
|
+
exit and failure. Pre-launch errors use the normal host UI.
|
|
668
|
+
|
|
669
|
+
The child has an independent database session. Host transactions, results,
|
|
670
|
+
and editor state are preserved; host read-only, autocommit, and other session
|
|
671
|
+
settings are not applied to SQL*Plus. Launching is allowed in read-only mode.
|
|
672
|
+
The password file is reread each time, preserving spaces and removing only
|
|
673
|
+
final CR/LF, as with normal host connection setup. This is not a transfer of
|
|
674
|
+
the existing Oracle connection or its session state.
|
|
675
|
+
|
|
676
|
+
This capability requires a POSIX terminal, `/dev/fd`, and an installed SQL*Plus
|
|
677
|
+
client. Connection fields must be nonempty, contain no control characters or
|
|
678
|
+
embedded double quotes, and produce a CONNECT line of at most 2400 UTF-8
|
|
679
|
+
bytes (also subject to the platform pipe limit). Explicitly quoted usernames
|
|
680
|
+
are supported. Unsupported values are rejected without displaying credentials.
|
|
681
|
+
Older hosts can be detected with `getattr(context, "start_sqlplus", None)`;
|
|
682
|
+
the maintained plugin reports an upgrade requirement when unavailable.
|
|
683
|
+
|
|
622
684
|
## Compatibility boundary
|
|
623
685
|
|
|
624
686
|
API v1 supports command registration, immutable loaded-result snapshots,
|
|
625
687
|
plugin-scoped string settings, host-managed export, and metadata-only current-
|
|
626
|
-
schema code generation
|
|
688
|
+
schema code generation, host-managed dependency walking, and SQL*Plus launching.
|
|
689
|
+
It does not promise internal module names, status
|
|
627
690
|
wording, curses layout, database/session objects, mutable grid state, event
|
|
628
691
|
hooks, lifecycle callbacks, arbitrary shortcuts, arbitrary queries or jobs,
|
|
629
692
|
workspace-local Python-file discovery, or hot reload.
|
|
630
693
|
|
|
631
|
-
Authors
|
|
632
|
-
must not probe host internals to extend this
|
|
694
|
+
Authors may check their own optional dependencies and explicitly documented
|
|
695
|
+
additive public capabilities; they must not probe host internals to extend this
|
|
696
|
+
surface. A future incompatible
|
|
633
697
|
contract requires a different `PLUGIN_API_VERSION`; factories and managed
|
|
634
698
|
manifests with a nonmatching version are rejected instead of being loaded
|
|
635
699
|
partially.
|