-
Notifications
You must be signed in to change notification settings - Fork 268
Εργασία miniDB (ΣΔΒΔ) #222
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
Open
roussosan
wants to merge
49
commits into
DataStories-UniPi:master
Choose a base branch
from
roussosan:master
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Feature/enrich_where/and_or
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Ομάδα:
Κουσιάβελος Χαράλαμπος Π20102
Πρίμπας Δημήτριος Π20162
Ρούσσος Αντώνιος Π20167
#1 ENRICH WHERE STATEMENT
Στο αρχείο mdb.py:
Δημιουργήθηκαν δύο νέες συναρτήσεις. Η evaluate_whereclause() και form_where_clause
evaluate_where_clause()
Δέχεται ως είσοδο το λεξικό στο οποίο έχει αναλυθεί το query που δόθηκε. Δουλεία της είναι να αναλύσει περαιτέρω το value του κλειδιού 'where' και να επιστρέψει πίσω το λεξικό που δόθηκε με τη διαφορά οτι η τιμή του κλειδιού where θα είναι έτοιμη για εκτέλεση. Καλείται όταν δεν είναι κενή η τιμή του κλειδιού where.
form_where_clause()
Δέχεται ώς είσοδο το value του κλειδιού where του λεξικού στο οποίο αναλύθηκε το query και το οργανώνει κατάλληλα σε ένα λεξικό το οποίο και επιστρέφει. Σε αυτή την συνάρτηση γίνεται ο εντοπισμός και ανάλυση των λογικών τελεστών and, or, between και not.
Στο αρχείο table.py
_find_rows()
Δέχεται ως είσοδο το value του κλειδιού where του λεξικού που προήλθε από το query που έδωσε ο χρήστης και επιστρέφει μια λίστα με τα indexes των εγγραφών που ικανοποιούν την συνθήκη.
_in_depth()
Δέχεται ως είσοδο είτε μια συνθήκη είτε ένα λεξικό με πολλές συνθήκες. Στην περίπτωση που η είσοδος είναι μια συνθήκη (type str) τότε απλά την εκτελεί. Στην περίπτωση που η είσοδος είναι λεξικό τότε εκτελεί την κάθε μεμονωμένη συνθήκη αναδρομικά ξεκινώντας από την πιο εσωτερική προς την πιο εξωτερική.
#2 ENRICH INDEXING FUNCTIONALITY
Αρχικά το table meta_indexes όταν δημιουργείται έχει δύο νέες στήλες, την table_column (str) και index_type (str).
Υπάρχει η δυνατότητα δημιουργίας unique column με σωστούς ελέγχους πριν κάθε εισαγωγή νέας εγγραφής.
create_index()
Πλέον γίνεται έλεγχος αν το table_column είναι pk ή unique column. Αν όχι, εμφανίζεται αντίστοιχο Exception. Μετά γίνεται έλεγχος αν υπάρχει ήδη εισαγωγή στον πίνακα meta_indexes με το συγκεκριμένο index_name. Αν όχι, γίνεται νέα εισαγωγή.
_construct_btree_index()
Δέχεται σαν ορίσματα table_name, table_column, index_name και φτιάχνει το Btree index.
_construct_hash_index()
Δέχεται σαν ορίσματα table_name, table_column, index_name και φτιάχνει το Hash index.
Νέο αρχείο hash.py
Υλοποίηση του Hash index με τη κλάση Hash
#3 Implement RA expressions
Προστέθηκε η δυνατότητα να μετατρέπεται ένα query σε σχεσιακή άλγεβρα. Με είσοδο στο τερματικό το keyword "convert" ακολουθούμενο απο ένα query, θα μας επιστραφεί η ισοδύναμη σχεσιακή άλγεβρα χωρίς να εκτελεσθεί το query.
Στο αρχείο misc.py
convert_to_RA()
Δέχεται ως είσοδο το λεξικό του query που έδωσε ο χρήστης και το επιστρέφει σε σχεσιακή άλγεβρα.
convert_query_dic_to_RA_dic()
Δέχεται ως είσοδο ένα λεξικό από query και το μετατρέπει σε λεξικό σχεσιακής άλγεβρας.
simplify_from()
Δέχεται ως έισοδο το value from του λεξικού του query και το επιστρέφει απλοποιημένο. Αυτό χρησιμεύει στην περίπτωση που το query περιλαμβάνει περισσότερα απο δύο joins διότι θα μετατρέψει το λεξικό σε καλύτερη προς επεξεργασία μορφή.
selection_to_string()
Δέχεται ως είσοδο το value selection του λεξικού της σχεσιακής άλγεβρας και το μετατρέπει σε ένα απλο string.
table_name_to_string()
Δέχεται ως είσοδο το value table του λεξικού της σχεσιακής άλγεβρας και το μετατρέπει σε ένα απλο string.