ailab-foi / akdb Goto Github PK
View Code? Open in Web Editor NEWAn experimental relational DBMS developed by students @ Faculty of Organization and Informatics, University of Zagreb
An experimental relational DBMS developed by students @ Faculty of Organization and Informatics, University of Zagreb
Povezati sustav za recovery tako da se on koristi pri svim operacijama koje mijenjaju podatke u bazi podataka te ih zapisuje u log. Ako dođe do ispada sustava, recovery osigurava da se sve operacije koje eventualno nisu završile na disku (nego o cache memoriji i sl.) povrate.
Datoteke se generiraju u pogrešnom direktoriju. Ugraditi u config.ini datoteku jedan entry u kojem će pisati direktorij u koji će se pohranjivati logovi, te od tamo učitati direktorij i tamo upisivati datoteke.
(Samo log.log, rec.bin je dio drugog zadatka).
Provjeriti koje su naredbe implementirane u sql_tokenizeru (PyParsing) i klase u SQL executoru, te po potrebi implementirati dodatne klase. Također, u klijentu dodati u help menu one naredbe koje su implementirane.
Debugging i sitne pogreške: U Privilges.c funkcija add_user_to_group provjerava samo korisnika, ali ne i grupu (provjeriti i ispraviti). Sitne pogreške: komentari nisu dobro napisani, ne koristi se funkcija za traženje n-tog elementa u redu kada je to potrebno, neki if uvjeti imaju viška zagrade, u Drop.c se pojavljuje define i system_catalog (trebaju biti u Drop.h). Neke naredbe se ponavaljaju više puta jedna nakon druge, primjer je u Privileges.c result = AK_group_remove_by_name(old_name). Sve navedeno provjeriti i popraviti.
Refaktorirati datoteku i posebno pregledati regex-ove.
Popraviti sljedeće natuknice:
akdb/src/file/table.c
akdb/src/file/test.c
SQL executor datoteka postoje linije koda koje su zakomentirane bez opisa
zašto je zakomentirano.
Postoje deprecated datoteke koje je potrebno izbrisati
akdb/src/srv/client_test.py i akdb/src/srv/server_test.py
Nije moguće pokrenuti server zbog errora, vjerojatno uzrokovan neispravnom
swig konfiguracijom.
nnull.c:
Datoteke sequence.c|h premjestiti u direktorij file te povesti računa o svim #include-ovima i korištenjma u drugim datotekama.
Provjeriti je li postoji neki dio u SELECT naredbi (WHERE klauzula) koji je iskoristiv. Bilo bi dobro da je sustav za provjeravanje formule obzirom na red u tablici jedinstven na razini sustava.
akdb/src/rel/sequence.c
Prilagoditi kod u sql_tokenizer na novu verziju PyParsing-a (debugging).
Kod aggregation.c stvara se nepotrebni zadnji red popunjen s null vrijednostima.
Test za nat_join nije dodan.
Kod je na nekim mjestima dosta nepregledan. Potrebno ga je refaktorirati.
Neke funkcije se ne koriste dok s druge strane postoje razliciti dijelovi koda sličnih namjena koji bi mogle biti implementirani u jednu zasebnu funkciju.
Prilikom višestrukih testiranja iste funkcionalnosti zapisi se multipliciraju te bi bilo dobro kad bi se tablice očistile od starih zapisa.
Takoder, neki dijelovi koda nisu adekvatno komentirani te je opcenito potrebno poraditi na dokumentaciji koda.
Integrirati skriptu za prepoznavanje hrvatskih komentara u MakeFile tako da se ispiše vidljivo upozorenje (npr. na kraju build-a) u slučaju da se u nekoj datoteci pojavi hrvatski komentar.
Dokumentirati (u svakoj datoteci tako da ih Doxygen hvata i u README datoteci) comments.py parseC.sh parsePy.sh getFiles.sh updateVersion.sh quickrun i premjestiti u novi direktorij tools te dodati u Makefile
DATOTEKA: hash.c
POGREŠKA: SIGSEGV u funkciji AK_elem_hash_value() kada je pozvana iz
funkcije AK_create_hash_index()
OPIS: Na liniji 564 funkcija AK_create_hash_index() poziva funkcija
AK_elem_hash_value() i prosljeđuje joj referencu na temp_elem. Pozvana
funkcija pokušava iz prosljeđene reference dohvatiti vrijednost atributa
type (linija 31), ali to dovodi to poziva SIGSEGV.
UZROK: Na liniji 563 poziva se funkcija Ak_GetNth_L2() i rposljeđuju joj
se varijable l i row. Tokom debug-iranja saznalo se da je vrijednost
parametra l u tom trenutku jednak 0, što dovodi do toga da navedena
funkcija vraća NULL u varijablu temp_elem. To znači da aplikacija (unutar
funkcije AK_elem_hash_value()) pokušava dohvatiti nepostojeći podatak.
DATOTEKA: btree.c
POGREŠKA: SIGSEGV u funkciji AK_btree_insert()
OPIS: Na liniji 326 u funkciji AK_btree_insert() javlja se SIGSEGV.
UZROK (mogući): Vrijednost od root->root je možda prevelika (malo manje od
2.000.000.000) što dovodi do čitanje izvan dosega polja. Ta vrijednost se
poprimi nakon izvođenja funkcije memcpy() u liniji 322.
Popraviti dbman.c tako da se omogući promjena veličine datoteke baze podataka putem ini-datoteke.
-filesearch.c
- pokušati napraviti da se pretraživanje obavlja po već sortiranim segmentima
python test.py
python -m doctest -v test.py
Ispraviti testove. Integrirati testove u MakeFile (napraviti entry make test koji će pokrenuti doctest gore)
-archive log koristi statičko ime datoteke za kreiranje log-a, to se možda pokušalo popraviti funkcijom AK_get_timestamp, ali ona se zapravo nigdje ne koristi. Ugraditi funkciju u kreiranje log-a. Također, u config.ini ugraditi konfiguracijske elemente koji će odrediti u koji će se direktorij pospremati archive_log, te od tamo učitati direktorij.
--projection.c--
Kod sadrži funkciju "AK_temp_create_table" koja bi se trebala nalaziti u
nekoj vanjskoj biblioteci.
ideja je da se budućim
studentima olakša korištenje i podešavanje razvojne okoline.
How to get started?
System requirements
Installing system requirements
Installing, Setting up, Running virtual environment Python2.7
Installing python requirements via requirements.txt
Running akdb
Isto tako dodao bih i korištenje virtualenv, pošto se na nekim
distribucijama po defaultu koristi Python v3.x.
Tesitranje
Mogu testirati rješenje putem DigitalOcean droppleta. Tako mogu provjeriti
da na čistu instalaciju(Debian 8.0) uspješno instalira sve potrebne
pakate, libove itd.
Sve te informacije postavio bih u početni README file, kao što imaju
brojni drugi repozitoriji na githubu. Npr.
https://github.com/angular/angular-seed
Bitmap.c
Funkcija int Ak_write_block je samo zakomentirana te trenutno nema
implementaciju
Funkcija void Ak_print_Header_Test bi trebala biti prenamijenjena u obicnu
a ne test funkciju ili implementirana u testni dio.
Integrirati redo_log u normalan rad sustava: ako se neki upit ili dio upita ponovi (obzirom na redo_log) te ako nije bilo pisanja po objektima koji su u pitanju (tablice), tada ne izvršavaj ponovno upit nego vrati već dobiveni rezultat.
check_constraint.c
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.