Dlaczego typesql jest stopniowy#
SQL zawiera lata działających zapytań. typesql dodaje warstwę dowodową, nie zmieniając tych zapytań w inny język uruchomieniowy. Dokument bez adnotacji pozostaje prawidłowy; każda adnotacja wzmacnia lokalne zobowiązanie.
Prawa wymazywania#
Podstawowa składnia typów służy wyłącznie do sprawdzania. expression satisfies T jest wymazywane do expression. Nagłówek CTE z typami zachowuje nazwy kolumn, a traci części typów. Cała instrukcja import type zostaje wymazana.
Poza zakresami adnotacji wymazywanie zachowuje oryginalne tokeny wykonywane w środowisku uruchomieniowym. Nie formatuje ani nie kompiluje ponownie instrukcji. Jeśli adnotacja mogłaby zmienić wartość, wiersz lub efekt uboczny, nie należy do podstawowej składni typesql.
Typy pochodzą z dowodów#
Moduł sprawdzający otrzymuje dostawcę schematu, zamiast otwierać bazę danych. Dostawcą może być bieżąca migawka katalogu, fixture zapisana w repozytorium albo środowisko pakietów przypięte do treści. To samo zapytanie można więc sprawdzić w edytorze, CI lub narzędziu offline.
Nieznany dowód pozostaje unknown. Znana pisownia kolumny nie uzupełnia brakującego dowodu typu fizycznego. Stwierdzenia o kluczu podstawowym i braku wartości null wymagają aktualnego dowodu z katalogu.
Język pozostaje ograniczony#
SQL, artefakty pakietów, środowiska widoków logicznych, grafy typów, diagnostyka i dokumenty wyjściowe mają limity przyjęcia. Są one egzekwowane przed kosztowną materializacją. Wrogi lub uszkodzony dostawca nie może wymusić nieograniczonej rekursji, alokacji ani utrzymywania pamięci podręcznej.
To część semantyki: przekroczenie limitu powoduje stabilną odmowę, na przykład TS0608 lub TS0802, a nigdy pozornie prawidłowy częściowy wynik typowania.
Diagnostyka jest interfejsem#
Jednym z głównych odbiorców błędów zapytań jest agent naprawiający własny SQL. Każdy komunikat diagnostyczny zawiera więc lokalizację, przyczynę, sposób naprawy, stabilny kod i postać maszynową. Sam „błąd składni” nie wystarcza człowiekowi ani agentowi do dojścia do rozwiązania.
Tekst komunikatu może się poprawiać bez łamania integracji, ponieważ interfejsem są kod i struktura. Poprawki mechaniczne zawierają dokładne zakresy i zamienniki; sugestie, które mogłyby zmienić znaczenie, pozostają tekstem opisowym.
Pełne funkcje zachowują granicę#
Funkcje z typami są kompilowane dopiero po przejściu kontroli kontraktów. Pakiety są przypięte do treści. Widoki logiczne rozwijają się z dokładną proweniencją przed sprawdzaniem. Maski polityk pozostają masked<T> aż do autoryzowanej granicy polityki środowiska uruchomieniowego.
Każda funkcja dodaje dowody lub strukturę wielokrotnego użytku, zachowując pierwotną obietnicę: typy pomagają Supernova wcześniej odrzucić błędne zapytanie, lecz adnotacje nigdy nie powodują wykonania innego zapytania.