Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ΕΡΓΑΣΙΑ ΣΔΒΔ ΣΕΠΤΕΜΒΡΙΟΣ 2023 #232

Open
wants to merge 17 commits into
base: master
Choose a base branch
from

Conversation

Kapiniaris-Xrisovalantis

ΟΜΑΔΑ:
Καπινιάρης Χρυσοβαλάντης Γεώργιος - Π20229
Κουρτίδης Γεώργιος - Π20101
Περιστεράκη Μαρία - Π20159

ΠΕΡΙΓΡΑΦΗ:
#issue 1
_parse_condition
image
Στην parse_condition έγιναν αλλαγές για να αναγνωρίζεται όχι μόνο η μορφή "column-operator-value" αλλά και η μορφή "value-operator-column".
Ελέγχει αν το column βρίσκεται στο δεξί ή στο αριστερό μέρος του operator, ελέγχοντας αν υπάρχει μέσα στο table ως όνομα κάποιου column. Επιστέφει το αποτέλεσμα σε μορφή "column-operator-value".
image

split_condition
image
Στο split_condition έγιναν αλλαγές για την υποστήριξη του "not". Αν το condition ξεκινά με "not" , το διώχνει τελείως και κάνει μια μεταβλητή negate=-1. Αν το negate είναι -1 αντιστρέφει το operator του condition ως εξής:
image

replace_between
image
Η replace between αντικαθιστά τα "BETWEEN" queries με "AND". Αυτό επιτυγχάνεται αφού το between είναι ένα and που γίνεται μεταξύ 2 τιμών σε ένα column.

select_where

image
Στην αρχή μετατρέπουμε τυχόν "between" queries σε "and" και κάνουμε split το condition πάνω σε τυχόν "or".
Στη συνέχεια αφαιρούμε τυχόν "not" και αν υπάρχει "not" στην αρχή του condition, αντιστρέφουμε το αποτέλεσμα που θα έφερνε το query.
Για το and παίρνουμε τα αποτελέσματα και των δυο μελών του and και επιστέφουμε το σύνολο τους.
select * from instructor where salary>50000 and salary<80000
image

select * from instructor where not id=10101
image

select * from instructor where id between 15000 and 46000
image

select * from instructor where salary=65000 or salary=90000
image

To delete_where και το update_rows γίνονται με τον ίδιο τρόπο με το select.
delete_where
image
image
image
image
update_rows
image
image
image
image

#Issue 2
unique column support
Για να δουμε αν ενα column ειναι unique οταν δημιουργητε ενας νεος πινακας στην create_query_plan μπήκαν οι παρακάτω γραμμές στο if action="create_table"
image
προστέθηκε επισης ενα σημαδι ώστε να φαινεται αν ενα column ειναι unique
image
image

indexes
Αρχικά προστέθηκε στο select στο database.py κώδικας που θα μας επιτρέψει να βρουμε σε ποιο column αναφέρεται το query ωστε σε περίπτωση που ειναι ενα με index να πράξουμε αναλόγως.

image

image

Αφου πάρουμε τη στηλη αν υπαρχει καποιο index πανω σε αυτη τη στηλη ελεγχουμε αν το index ειναι hash ή btree και καλουμε την κατάλληλη συνάρτηση.
Συγκεκριμένα στο hash index, εφοσον το hash δεν υποστηρίζει ερωτήσεις διαστήματος θα πάει μεσω του index μονο αν η ερωτηση ειναι ταυτοτητας.

create_index
image
Αρχικά ελέγχετε αν το column στο οποιο θελουμε να φτιαξουμε index ειναι primary key ή unique. Στη περίπτωση που δεν είναι βγάζει exception.
Στη συνέχεια αν δεν υπάρχει ήδη κάποιο index με το ίδιο όνομα φτιάχνει ένα καινούργιο index ανάλογα με τον τύπο index Που του δόθηκε.
construct_index
image
Παίρνει κάθε τιμή του column και το βάζει μέσα στο index.
image
image

#issue 3
Δημιουργήθηκε ένα καινούργιο αρχείο equivalent_ra.py το οποίο περιέχει τους κανόνες σχεσιακής άλγεβρας και με την χρήση του dic[] μπορούμε να αλλάζουμε το query στα ενναλακτικά του.
image

George Kourtidis and others added 17 commits February 19, 2023 18:05
updated the where statements for select,delete,update and search throught btree, added unique support, added btree unique support and some hash index support
added in wrong folder
added in wrong folder
added in wrong folder
added in wrong folder
updated where statements for select,delete,update, added unique support, added btree support for unique column, added hash index
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants