Przejdź do treści

KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ

Transakcje, odmowy i izolacja

ADVANCED40 min
Postęp nauki 0 / 3
Zaloguj się na konto użytkownika, aby zachować postęp.

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.

  1. database Ledger {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. version = 1Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.
  3. Pusta linia oddziela fragmenty źródła.
  4. table balance {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  5. name: String primary keyOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  6. value: IntOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  7. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  8. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  9. 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.0 FROZEN_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-info raportuje syntax: PROVISIONAL — rozbieżność z freeze.
Otwórz cały rozdział ze źródłem →
KretDB — kody diagnostyczne / diagnostic codes

KretDB — kody diagnostyczne / diagnostic codes

Kod / codePolski
KCS-KDB-0102konstrukcja poza zakresem (np. transaction w schemacie, tryb cached)
KCS-KDB-0205 / 0206brak/za dużo kluczy głównych, zły typ klucza
KCS-KDB-0302schemat niezgodny / zmiana poza kontraktem migracji
KCS-KDB-0308przekroczony maxSize tabeli albo limit pliku
KCS-KDB-0310wynik ponad 10 000 wierszy
KCS-KDB-0315…0324operacje 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).

Otwórz cały rozdział ze źródłem →
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.
Otwórz cały rozdział ze źródłem →
KretDB — rozwiązywanie problemów / troubleshooting

KretDB — rozwiązywanie problemów / troubleshooting

Problem (PL)Rozwiązanie (PL)
KCS-KDB-0205 przy dwóch primary keyjedna kolumna klucza; drugi identyfikator jako zwykła kolumna z indeksem
Każdy db.* kończy się odmową w kret testdodaj --policy <host-policy.json> — bez polityki testy nie mają uprawnień
Plugin z KretDB nie startuje w Corekretdb.* = PROVISIONAL_DENIED do decyzji D-KCS-01
Otwórz cały rozdział ze źródłem →
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):

  1. kret check . --json — w wyniku: "succeeded": true
  2. kret run . --policy host-policy.json --data {DATA} — w wyniku: a=70 b=30
  3. kret test . --json --policy host-policy.json — w wyniku: "PASSED"
  4. kret run readonly --policy readonly/host-policy.json --data {DATA}/ro — w wyniku: zapis=odmowa
  5. kret check bad-schema --json — oczekiwany błąd — w wyniku: KCS-KDB-02

Wynik tej rundy: PASS — zob. EXPECTED_OUTPUT.txt.

Otwórz cały rozdział ze źródłem →

Ć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.

Które podsumowanie jest zgodne z lekcją?

To quiz o opisanym kontrakcie. Nie kompiluje kodu, nie potwierdza wykonania programu i nie przyznaje nagród.

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 →

Wybierz, co możemy zapamiętać w tej przeglądarce. Możesz zmienić decyzję w każdej chwili.

Polityka prywatności