KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ
Transakcje, odmowy i izolacja
Czego się nauczysz
- Prześledź źródła i wyjaśnij opisany kontrakt.
- W TransactionsTestsDenials znajdź oczekiwaną odmowę. Opisz, jak odróżnisz odmowę polityki od błędu schematu i jak zachowasz prywatne dane przy aktualizacji.
Wymagania wstępne
- Ukończ Podstawy i wcześniejszy poziom tej ścieżki.
Wyjaśnienie krok po kroku
Test sukcesu operacji i test odmowy uprawnienia sprawdzają różne własności. Transakcja nie może omijać brokera. Używaj świeżych katalogów danych w testach, aby nie uznać pozostałości poprzedniego uruchomienia za wynik bieżącego. Dostęp Core nadal zależy od D-KCS-01.
Praca z kodem źródłowym
Transakcje, testy `kret test`, odmowy uprawnień i błędy schematu
`db.begin/commit/rollback`, testy KretDB w izolowanym procesie (każdy moduł testowy dostaje świeżą bazę), odmowa zapisu, gdy polityka hosta przyznaje tylko odczyt (`readonly/`), oraz błąd schematu: dwa klucze główne (`bad-schema/`).
database Ledger {
version = 1
table balance {
name: String primary key
value: Int
}
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
database Ledger {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.version = 1Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.Pusta linia oddziela fragmenty źródła.table balance {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.name: String primary keyOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.value: IntOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.
Oczekiwany wynik: `a=70 b=30 odmowa=tak`; testy 2 × PASS; wariant tylko-do-odczytu zwraca `zapis=odmowa`; zły schemat kończy się kodem 1.
Typowy błąd: Uruchomienie `kret test` bez `--policy` — testy nie dostają wtedy żadnych uprawnień i każda operacja `db.*` jest odmową.
Instrukcja, wersje i zapisane wyniki →Materiały źródłowe do tego tematu
Przeczytaj powiązane rozdziały. Kod i kontrakty zachowano z importu; historia źródeł jest dostępna przy każdym rozdziale.
KretDB — zgodność i wersje / compatibility and versions
KretDB — zgodność i wersje / compatibility and versions
Polski
kretdb-1.0FROZEN_SUPPORTED_SUBSET; migracje/backup/restore w Core PROVISIONAL; żadna istniejąca baza nie jest migrowana.- SFI-B01 (kandydat local.3): wycofanie transakcji tylko przy odmowie autoryzacji — do potwierdzenia przez właściciela (G-05).
- SDK
sdk-inforaportujesyntax: PROVISIONAL— rozbieżność z freeze.
KretDB — kody diagnostyczne / diagnostic codes
KretDB — kody diagnostyczne / diagnostic codes
| Kod / code | Polski |
|---|---|
KCS-KDB-0102 | konstrukcja poza zakresem (np. transaction w schemacie, tryb cached) |
KCS-KDB-0205 / 0206 | brak/za dużo kluczy głównych, zły typ klucza |
KCS-KDB-0302 | schemat niezgodny / zmiana poza kontraktem migracji |
KCS-KDB-0308 | przekroczony maxSize tabeli albo limit pliku |
KCS-KDB-0310 | wynik ponad 10 000 wierszy |
KCS-KDB-0315…0324 | operacje hosta: transakcja przy migracji, kopia, odtworzenie, wymagana migracja, baza nowsza, właściciel, kroki usuwające, blokada, stara sesja |
KCS-PERM-* | brak przyznania kretdb.* (w Core: PROVISIONAL_DENIED) |
Format: kret-diagnostics/1 (kod, plik, wiersz, kolumna, zakres) / (code, file, line, column, range).
KretDB — bezpieczeństwo / security
KretDB — bezpieczeństwo / security
Polski
- Plugin nie widzi SQL, pliku bazy ani uchwytu; wartości zawsze wiązane.
- Baza należy do brokera; właściciel = tożsamość pluginu; kopia innej bazy odrzucana (
0321). - W Core
kretdb.*mają status PROVISIONAL (D-KCS-01) — KretNotes/KretTasks instalują się, ale start jest odmawiany (sprawdzone w tej rundzie). - Polityki fixture SDK (
isolated-sdk-policy.json) nigdy nie są grantem Core.
KretDB — rozwiązywanie problemów / troubleshooting
KretDB — rozwiązywanie problemów / troubleshooting
| Problem (PL) | Rozwiązanie (PL) |
|---|---|
KCS-KDB-0205 przy dwóch primary key | jedna kolumna klucza; drugi identyfikator jako zwykła kolumna z indeksem |
Każdy db.* kończy się odmową w kret test | dodaj --policy <host-policy.json> — bez polityki testy nie mają uprawnień |
| Plugin z KretDB nie startuje w Core | kretdb.* = PROVISIONAL_DENIED do decyzji D-KCS-01 |
KretDB — samouczek ADVANCED
KretDB — samouczek ADVANCED
Status 1.0: `FROZEN_SUPPORTED_SUBSET` — zamrożony dokładnie opisany zakres; reszta poza kontraktem 1.0. Gramatyka/wersja: kretdb-1.0. Status języka nie nadaje uprawnień KCS ani prawa do działania w Production.Cel: integracja z Core i innymi językami, KretDB, bezpieczny dostęp do API, pluginy, stan, testy, diagnostyka, uprawnienia.
Narzędzia: kret = <SDK>\Compiler\kret.exe (SDK 1.0.0-rc.3+kret.local.3), kretui-host = <SDK>\UiHost\kretui-host.exe. {DATA}/{OUT} = nowe, puste katalogi.
1. Transakcje, testy kret test, odmowy uprawnień i błędy schematu (KRETDB-A01-TransactionsTestsDenials)
Projekt: ../../Examples/ADVANCED_TransactionsTestsDenials/ · klasyfikacja RUNNABLE_LOCAL · Playground LOCAL_EXECUTE
Kroki (katalog roboczy: katalog przykładu):
kret check . --json— w wyniku:"succeeded": truekret run . --policy host-policy.json --data {DATA}— w wyniku:a=70 b=30kret test . --json --policy host-policy.json— w wyniku:"PASSED"kret run readonly --policy readonly/host-policy.json --data {DATA}/ro— w wyniku:zapis=odmowakret check bad-schema --json— oczekiwany błąd — w wyniku:KCS-KDB-02
Wynik tej rundy: PASS — zob. EXPECTED_OUTPUT.txt.
Ćwiczenie i sprawdzenie wiedzy
W TransactionsTestsDenials znajdź oczekiwaną odmowę. Opisz, jak odróżnisz odmowę polityki od błędu schematu i jak zachowasz prywatne dane przy aktualizacji.
Szkic nie jest wysyłany na serwer i znika po opuszczeniu lekcji. Przed wyjściem możesz go skopiować.Podpowiedzi
- KretDB to własny interfejs bazy danych pluginu: schemat w `Disk/Schema.kdb`, nazwane zapytania typowane względem KretS, transakcje, izolowana baza należąca do brokera (backend SQLite — decyzja R-11). Plugin nigdy nie widzi SQL ani uchwytu bazy.
- Odczytaj ograniczenia i oczekiwane błędy z dostarczonego samouczka; check i run są oddzielnymi krokami.
Omówienie rozwiązania
Odpowiedź oprzyj na pokazanym kodzie i rozdziale źródłowym. Test sukcesu operacji i test odmowy uprawnienia sprawdzają różne własności. Transakcja nie może omijać brokera. Używaj świeżych katalogów danych w testach, aby nie uznać pozostałości poprzedniego uruchomienia za wynik bieżącego. Dostęp Core nadal zależy od D-KCS-01.
Podsumowanie i następny krok
Test sukcesu operacji i test odmowy uprawnienia sprawdzają różne własności. Transakcja nie może omijać brokera. Używaj świeżych katalogów danych w testach, aby nie uznać pozostałości poprzedniego uruchomienia za wynik bieżącego. Dostęp Core nadal zależy od D-KCS-01.
Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →