Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: MatBon01/joinbench
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.1.2
Choose a base ref
...
head repository: MatBon01/joinbench
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref

Commits on Jan 9, 2023

  1. Create interim report structure (#3)

    * Add introduction to spec
    
    * Include and document interim sections
    
    * Change interim report to edited report format
    
    This is the suggested layout for the final report, edited to be more
    readable.
    
    * Move title library to title folder
    
    * Move all report folders to a report directory
    
    * Add extra dependency for latex compilation
    
    * Remove spell tests
    MatBon01 authored Jan 9, 2023
    Copy the full SHA
    6639dae View commit details
  2. Add abstract (#10)

    * Add main paper to BibTeX
    
    * Fix bibliography
    
    * Add abstract as project description
    
    * Fix linting issue
    MatBon01 authored Jan 9, 2023
    Copy the full SHA
    2f24db7 View commit details

Commits on Jan 24, 2023

  1. Add basics of background info (#12)

    * Write draft structure for the background section
    
    * Draft structure for category theory crash course
    
    * Draft relational algebra crash course structure
    
    * Add outline for the evolution of database
    
    * Introduce bags
    
    * Remove linting warnings from being sent
    
    * Add some mathematical introduction to indexed table
    
    * Finish definition of finite map
    MatBon01 authored Jan 24, 2023
    Copy the full SHA
    e95521c View commit details
  2. Draft ethics chapter (#13)

    * Download ethics checklist
    
    * Change checklist columns
    
    * Fill in checklist
    
    * Add introduction to ethics
    
    * Structure ethics chapter
    
    * Add paragraph on energy consumption
    
    * Write about using someone else's idea
    
    * Add comments on data sources
    
    * Add todo to consider talking about distribution
    
    * Fix spelling issues
    MatBon01 authored Jan 24, 2023
    Copy the full SHA
    a4dacb4 View commit details
  3. Finish ethics checklist (#14)

    * Update ethics checklist
    
    * Use the checklist change to add detail
    MatBon01 authored Jan 24, 2023
    Copy the full SHA
    1300379 View commit details
  4. Add an introduction to the background section (#15)

    * Add an introduction to the background section
    
    * Split crash course into separate files
    
    * Add note to adjunctions
    
    * Fix spelling mistakes
    MatBon01 authored Jan 24, 2023
    Copy the full SHA
    d91a0ad View commit details

Commits on Jan 26, 2023

  1. Draft section on relational algebra (#16)

    * Add Database Systems to references
    
    * Reorganise background
    
    This includes reorganising the section on the relational model of a
    database and adding a brief introduction.
    
    * Fix broken bib record for Database Systems
    
    * Fix Database Systems bibtex entry
    
    * Add definition of relation and scheme
    
    * Finish introduction to relational model
    
    * Write introduction to relational algebra
    
    * Write subsection on permutation
    
    * Write section on projection
    
    * Include new table to show tuple
    
    * Add example table
    
    * Make font for keywords more regular
    
    * Fix spacings and spelling
    
    Spelling was in a TODO so does not matter much
    
    * Remove todo to fix attribute format
    
    * Write theory behind selection
    
    * Write section on selection
    
    * Complete section on product
    
    * Write paragraph on the natural join
    
    * Write paragraph on theta-join
    
    * Draft section on equijoins
    
    * Add in reference and fix spelling
    MatBon01 authored Jan 26, 2023
    Copy the full SHA
    75ebb61 View commit details
  2. Start drafting the introduction to category theory (#17)

    * Write an introduction to category theory
    
    * Introduce categories
    
    * Refine wording of introduction to categories
    
    * Define category
    MatBon01 authored Jan 26, 2023
    Copy the full SHA
    f16bfe8 View commit details
  3. First draft of the introduction (#18)

    * Draft an introduction to the original paper
    
    * Write point of the project
    MatBon01 authored Jan 26, 2023
    Copy the full SHA
    27b0191 View commit details
  4. Draft project plan (#19)

    * Write structure for the project plan
    
    * Draft a project plan
    MatBon01 authored Jan 26, 2023
    Copy the full SHA
    f36da8c View commit details
  5. Draft the evaluation (#20)

    * Write section on correctness
    
    * Comment on the evaluation of the analysis
    MatBon01 authored Jan 26, 2023
    Copy the full SHA
    5294d5a View commit details

Commits on Mar 30, 2023

  1. Copy the full SHA
    241de98 View commit details
  2. Add bulk-type project extension ideas to report (#22)

    * Reword introduction
    
    * Add normal logic program idea to introduction
    
    * Add project plan for logic programming
    
    * Add an evaluation plan for the project extension
    
    * Add ethical considerations of the extensions
    MatBon01 authored Mar 30, 2023
    Copy the full SHA
    35b10f3 View commit details
  3. Copy the full SHA
    3e78b57 View commit details

Commits on Apr 2, 2023

  1. Create a final report file (#24)

    * Add file for packages in preamble
    
    * Remove list of tables and figures from interim
    
    * Include all chapters of interim
    
    * Put abstract in separate file
    
    * Reorganise the main interim report
    
    * Create final report document
    
    * Add comments for chapters of final report
    
    * Combine references
    
    * Move background include to own interim file
    
    * Move interim ethical issues to own file
    
    * Move interim introduction to own file
    
    * Fix input of ethical issues in interim
    
    * Add final report to makefile
    MatBon01 authored Apr 2, 2023
    Copy the full SHA
    50f5035 View commit details
  2. Fix spelling in pipeline (#26)

    * Move interim and final to report directory
    
    * Fix spell checking in pipeline
    
    * Fix some make commands in github workflows
    
    * Change linting to always succeed github status
    MatBon01 authored Apr 2, 2023
    Copy the full SHA
    8cec806 View commit details
  3. Report number of linting warnings (#27)

    * Report number of linting warnings
    
    * Fix change of linting github status
    MatBon01 authored Apr 2, 2023
    Copy the full SHA
    37bd0df View commit details

Commits on Apr 5, 2023

  1. Implement a Bag data structure (#28)

    * Add record type for bags implementation
    
    * Create a cabal project
    
    * Add DatabaseBagsTest to cabal project
    
    * Add MultiSet to the test database
    
    * Define a table as a MultiSet
    
    * Add newTable function
    
    * Add singletonTable function
    
    * Add union function
    
    * Add test suite for bag package
    
    * Create Bag signature
    
    * Create function for empty
    
    * Clean package structure
    
    * Set up test suite
    
    * Implement and test singleton
    
    * Clean singleton test
    
    * Change bag definiton to match paper supplement
    
    * Make Bag a functor
    
    * Define applicative for bag
    
    * Define Monad for Bag
    
    * Test Applicative for Bags
    
    * Test Monad instance of Bag
    
    * Remove unused ghc pragma
    
    * Add empty function to Bags
    
    * Fix bag equality
    
    * Improve efficiency of eq
    
    * Implement Semigroup for Bag
    
    * Define a commutative monoid
    
    * Define Bag as a monoid
    
    * Define a Bag as a commutative monoid
    MatBon01 authored Apr 5, 2023
    Copy the full SHA
    30560fb View commit details
  2. Fix cabal setup issues (#29)

    * Create haskell.yml
    
    Signed-off-by: Matteo Bongiovanni <40599507+MatBon01@users.noreply.github.com>
    
    * Specify checks as report checks
    
    Signed-off-by: Matteo Bongiovanni <40599507+MatBon01@users.noreply.github.com>
    
    * Fix project name
    
    * Fix declaration of CMonoid module
    
    * Make base version more lenient
    
    * Revert "Make base version more lenient"
    
    This reverts commit 7d26f34.
    
    * Add more available base versions
    
    * Remove Haskell pipeline
    
    * Rename paper mentioned
    
    Signed-off-by: Matteo Bongiovanni <40599507+MatBon01@users.noreply.github.com>
    
    ---------
    
    Signed-off-by: Matteo Bongiovanni <40599507+MatBon01@users.noreply.github.com>
    MatBon01 authored Apr 5, 2023
    Copy the full SHA
    177617b View commit details

Commits on Apr 6, 2023

  1. Create pointed set (#31)

    * Define PointedSet type class
    
    * Add PointedSet to cabal file
    
    * Fix quantification of PointedSet module name
    
    * Define a Bag as a PointedSet
    MatBon01 authored Apr 6, 2023
    Copy the full SHA
    b6348ee View commit details
  2. Add section on Functors (#32)

    * Add section on Functors
    
    * Fix spelling error
    MatBon01 authored Apr 6, 2023
    Copy the full SHA
    550ce45 View commit details

Commits on Apr 7, 2023

  1. Add natural transformations definition (#33)

    * Write introduction
    
    * Create theorem for natural transformation
    
    * Create utils for natural transformation
    
    Also add comments to other util commands
    
    * Write definition for natural transformation
    
    * Change some arrow definitions with explicitmorph
    
    * Fix natural transformation introduction
    
    * Fix notation
    
    * Remove more parentheses in functor application
    MatBon01 authored Apr 7, 2023
    Copy the full SHA
    d445179 View commit details

Commits on Apr 25, 2023

  1. Define key for maps (#34)

    * Define Product and Sum as CMonoids
    
    * Define reduce for bags
    
    * Rename reduce function for bags
    
    * Define keys for finite map
    
    * Define Maybe as a PointedSet
    
    * Add some tests for () Key instance
    
    * Fix index test case
    
    * Add test cases for () key map unindex
    
    * Comment reduceBag
    
    * Add test for reduce
    
    * Fix spellings
    MatBon01 authored Apr 25, 2023
    Copy the full SHA
    ff853c3 View commit details
  2. Add implementation section to new benchmarking report chapter (#35)

    * Remove chapter for project
    
    * Add chapter for benchmarking
    
    * Add section to describe the implementation
    
    * Add description of Maybe PointedSet implementation
    
    * Add description of the definition of Bag as a PointedSet
    MatBon01 authored Apr 25, 2023
    Copy the full SHA
    f2d9fe4 View commit details
  3. Add reference to paper supplementary (#36)

    * Add stand-in reference for supplementary file part B
    
    * Write introduction holding prototype citation
    MatBon01 authored Apr 25, 2023
    Copy the full SHA
    c94e173 View commit details

Commits on Apr 28, 2023

  1. Implement a database implementation with bags (#37)

    * Add LANGUAGE extensions for the library in cabal
    
    * Add file to hold example from appendix
    
    * Remove old test file
    
    * Add types for the example
    
    * Define cartesian product for bags
    
    * Start example with cartesian product
    
    * Add test cases for bag cartesian product
    
    * Add file to hold database operations
    
    * Add table with overview of relational algebra in bags
    
    * Implement empty table
    
    * Define singleton table and bag
    
    * Fix organisation of BagSpec tests
    
    * Test the singleton Bag function
    
    * Define singleton bag
    
    * Test singleton table function
    
    * Define table union
    
    * Define cartesian product for database tables
    
    * Define neutral element for a table
    
    * Implement projection
    
    * Implement selection and filtering
    
    * Add aggregation to bag implementation of database
    
    Also declare instance of related monoids as commutative monoids to use within
    the test case.
    
    * Rename selection function to select
    
    * Implement equijoin by cartesian product for bags
    
    * Explain design choice with commutative monoids
    
    * Fix some spellings in implementation report
    
    * Fix spellings
    
    * Test CMonoid implementations of Boolean operations
    MatBon01 authored Apr 28, 2023
    Copy the full SHA
    19223cd View commit details
  2. Implement indexed tables as databases (#38)

    * Add IndexedTable file
    
    * Add singleton Indexed Table
    
    * Implement unions of indexed tables
    
    * Implement projection
    
    * Implement selection on IndexedTables
    
    * Implement aggregation in indexed table
    
    * Define natural join for indexed tables
    
    * Explain natural join for indexed tables
    MatBon01 authored Apr 28, 2023
    Copy the full SHA
    aecbe7a View commit details

Commits on Apr 29, 2023

  1. Uncurry input types for most database operations (#39)

    * Uncurry union operation
    
    * Uncurry bag Cartesian Product
    
    * Add explanation of uncurrying functions to report
    
    * Add another input to fix referencing warning
    
    * Fix pointed set text in implementation report section
    
    * Uncurry natural join function in Indexed Table
    MatBon01 authored Apr 29, 2023
    Copy the full SHA
    a6ade28 View commit details
  2. Add appendix example using Cartesian product (#40)

    * Derive Show and Eq for given example record types
    
    * Redefine Bag projection to project
    
    * Rename IndexedTable projection
    
    * Implement appendix example using bags
    
    * Fix types in example
    
    * Finish example using Cartesian products
    MatBon01 authored Apr 29, 2023
    Copy the full SHA
    8fe44c9 View commit details

Commits on May 2, 2023

  1. Add draft of adjunction definition (#41)

    * Draft introduction
    
    * Change explicit denotation for natural transformations
    
    * Start definition of an adjunction
    
    * Ensure that the difference between id functor and morph shown
    
    * Add command for vertical composition
    
    * Add introduction to natural transformation composition
    
    * Add definition of vertical composition
    
    * Add first draft at writing the triangle inequalities
    
    * Add reminder for what nat trans part I struggled with
    
    * Fix order of second triangle equality
    
    * Fix spellings
    MatBon01 authored May 2, 2023
    Copy the full SHA
    17e86e4 View commit details
  2. Implement indexed equijoin (#43)

    * Implement indexing bags
    
    * Describe what () key is
    
    * Define product of pointed set
    
    * Implement indexing and merging of arrays
    
    * Change reminder to test more complicated mapping
    
    * Implement lookup
    
    * Implement indexing
    
    * Implement unindexing of map
    
    * Test reduction of Array map
    
    * Test indexing with repeated keys
    
    * Add indexedEquijoin to database
    MatBon01 authored May 2, 2023
    Copy the full SHA
    eb13653 View commit details

Commits on May 3, 2023

  1. Implement example in appendix (#44)

    * Generalise functions used in product indexing
    
    * Add message with expected example
    
    * Rename example with Cartesian product
    
    * Define appendix example using predefined indexed join
    
    * Define explicit form like in appendix
    
    * Flip arguments to indexBy
    MatBon01 authored May 3, 2023
    Copy the full SHA
    6333d79 View commit details

Commits on May 5, 2023

  1. Add parsers for test tables (#45)

    * Create base for customers parser
    
    * Define types for Customer
    
    * Write parser for Customer table
    
    * Add parser for invoices table
    MatBon01 authored May 5, 2023
    Copy the full SHA
    a7125e4 View commit details

Commits on May 29, 2023

  1. Write table generator (#46)

    * Add gitignore for python
    
    * Define cell interface
    
    * Create random name cell generator
    
    * Create id cell generator
    
    * Define constructor for table generator
    
    * Add name list to random name generator constructor
    
    * Add optional bounds on an id
    
    * Define a cell that duplicates values
    
    * Add a signature for table generator
    
    * Define record generator
    
    * Define table generator
    
    * Fix imports in cells
    
    * Fix duplicated cells
    
    * Remove num of records from table gen init
    
    * Add draft to generate customer table
    
    * Define a csv table generator
    
    * Add database files to gitignore
    
    * Define a unique cell
    
    * Fix spelling in table generation
    
    * Make attempt checking more readable
    
    * Add surname data list
    
    * Add list of first names
    
    * Generalise random name cell
    
    * Define a tracking cell
    
    * Update logic to create customer database
    
    * Format python files
    
    * Move database generation code to directory
    
    * Add id cell to order generation
    
    * Define an amount cell
    
    * Add amount to order table
    
    * Fix randomness in generated cells
    
    * Add skeleton for date cell
    
    * Generate a random year
    
    * Implement month generation
    
    * Define month enum
    
    * Improve types for date cell
    
    * Add function to generate day
    
    * Generate date
    
    * Generate order table for database
    
    * Define a parser to create databases
    
    * Enable custom database generation
    
    * Change parser to accept surnames
    
    * Fix mismatching end of line parser
    
    * Rename orders table to invoice in database generation
    
    * Fix cabal file
    
    * Fix incorrect type for amount generation
    MatBon01 authored May 29, 2023
    Copy the full SHA
    dde831b View commit details

Commits on Jun 7, 2023

  1. Add skeleton for database benchmarking material (#47)

    * Add file for database benchmarking
    
    * Add description of three benchmarking database types
    
    * Add introduction to the types of database environment
    
    * Add information on transaction processing
    
    * Remove online aspect of transaction processing
    
    * Add a skeleton of the subsections
    
    * Add skeleton to introduce transaction integrity
    
    * Add transaction words to project dictionary
    
    * Remove empty citation
    MatBon01 authored Jun 7, 2023
    Copy the full SHA
    98a779a View commit details
  2. Add benchmarking literature review citations (#48)

    * Reword introduction slightly
    
    * Add Wisconsin paper to references
    
    * Add Wisconsin Retrospective reference
    
    * Add DebitCredit reference
    
    * Add citations from benchmarking handbook
    
    * Add TPC-H citation
    
    * Format bibfile
    MatBon01 authored Jun 7, 2023
    Copy the full SHA
    62d52e2 View commit details

Commits on Jun 8, 2023

  1. Copy the full SHA
    7b5ae82 View commit details

Commits on Jun 15, 2023

  1. Refactor argument parsing for customer database generating (#50)

    * Fix date addition to table generation
    
    * Format customer database generator
    
    * Move main method to front
    
    * Define a table configuration
    
    * Separate the definition of the parser
    
    * Separate the adding of arguments to parser
    
    * Refactor parsing customer args
    
    * Refactor invoice arguments parsing
    
    * Return table configurations from argument parser
    
    * Reorder generate_database arguments
    
    * Make generate table take in TableConfiguration
    
    * Change signature of generate customer table to take in a config
    
    * Refactor generate invoice table to take in a configuration
    
    * Move configuration to own module
    
    * Make TableConfiguration an abstract class
    MatBon01 authored Jun 15, 2023
    Copy the full SHA
    393f57a View commit details
  2. Fix schema, relation and attribute representations (#51)

    Changes also include preliminary editing of the relational model section.
    
    * Fix todo in relational model introduction
    
    * Fix relation and attribute styles
    
    * Fix schema definition
    
    * Change relation and attribute font
    
    * Proof read the definition of schema
    
    * Proof read the definition for a tuple
    
    * Add some labels to dictionary
    
    ---------
    
    Signed-off-by: Matteo Bongiovanni <40599507+MatBon01@users.noreply.github.com>
    MatBon01 authored Jun 15, 2023
    Copy the full SHA
    69dd944 View commit details

Commits on Jun 16, 2023

  1. Structure final report (#52)

    * Separate long lines in final.tex
    
    * Add all relevant background pages from interim
    
    * Add background section on implementation details in Haskell
    
    * Separate database implementation from benchmarks
    
    * Add final report release
     Please enter the commit message for your changes. Lines starting
    
    * Try fix missing package in latex compilation
    
    * Add an extra package level in spell checking
    
    * Add some implementation vocabulary to dictionary
    MatBon01 authored Jun 16, 2023
    Copy the full SHA
    f400964 View commit details

Commits on Jun 17, 2023

  1. Introduce database benchmarking and Wisconsin table structure (#53)

    * Fix Wisconsin citation
    
    * Add a more detailed discussion of benchmark types
    
    * Add reference for DoingYourOwnBenchmark
    
    * Fix crossref error in bib file
    
    * Introduce the domain-specific portion of the literature review
    
    * Add database benchmark application introduction
    
    * Introduce metrics for transaction processing benchmark
    
    * Add benchmark name to dictionary
    
    * Define transaction integrity
    
    * Fix outline of decision-support section
    
    * Add introduction to decision support systems
    
    * Add reasons decision support systems model paper
    
    * Add descriptions of metrics of decision support
    
    * Add benchmark examples for decision support
    
    * Add explanation on the selection of benchmarks
    
    * Define layout of benchmarking case studies
    
    * Intoduce the concept of a synthetic database
    
    * Add paragraph on Wisconsin relations
    
    * Add paragarph on Wisconsin tuples
    
    * Add a paragraph on the unique fields
    
    * Add draft table for attributes of Wisconsin database
    
    * Add all cyclical Wisconsin integer attributes
    
    * Add range for Wisconsin attribute strings
    
    * Change range for integer attributes
    
    * Explain cyclic integer attributes
    
    * Rename the subparagraphs to attributes
    
    * Add introduction to the string values
    
    * Change references to range to domain
    
    * Describe the string template
    
    * Center the template string
    
    * Style attribute table
    
    * Add a table showing how stringu1 changes
    
    * Remove labels from example string table
    
    * Describe how to calculate unique strings
    
    * Describe how string4 is generated
    
    * Change attribute to relationAttribute
    
    * Describe the aims of the queries
    
    * Remove unused subheadings
    
    * Fix spelling
    
    ---------
    
    Signed-off-by: Matteo Bongiovanni <40599507+MatBon01@users.noreply.github.com>
    MatBon01 authored Jun 17, 2023
    Copy the full SHA
    5f5e4d1 View commit details

Commits on Jun 18, 2023

  1. Clean category theory background section for final report (#54)

    * Change introduction of category theory
    
    * Add spacing after introduction
    
    * Use unicode for mathematics
    
    * Remove not needed parts at beginning
    
    * Define hom-set
    
    * Remove unicode mathematics package
    
    I chose to do this as it messes with the font used for my categories.
    
    * Fix spelling in introduction
    
    * Add indication that arrow of functor in category
    
    * Fix citation in vertical composition
    
    * Remove section on horizontal composition
    
    * Fix open functormorph application
    
    * Fix mismatched bracket
    
    * Remove todo for further adjunction definition
    
    * Fix todo for more information in section
    
    * Remove plagiarism check todo
    
    * Remove section on graded monads
    
    * Fix notation with natural transformations
    MatBon01 authored Jun 18, 2023
    Copy the full SHA
    9e182ff View commit details

Commits on Jun 19, 2023

  1. Edit relational algebra background section for final report (#55)

    * Move all citations to before punctuation
    
    * Mention how tuples are built up
    
    * Remove mention of bags
    
    * Remove multiplicity doubt in relational algebra section
    
    * Remove uncertainty on theta
    
    * Remove note to write example for equijoin
    
    * Remove note on permutations
    
    * Change tables to have format specifier h
    
    * Find missing example for schema with domain
    
    * Add label to dictionary
    MatBon01 authored Jun 19, 2023
    Copy the full SHA
    5ac0a68 View commit details
  2. Edit background on database representation for final report (#56)

    * Move citations before punctuation
    
    * Remove todos related to bags
    
    * Fix introduction to indexed tables
    
    * Remove todos on finite maps and indexed tables
    
    * Remove reference to removed useful functions section
    MatBon01 authored Jun 19, 2023
    Copy the full SHA
    db5a5c6 View commit details
  3. Copy the full SHA
    36f6ac8 View commit details
  4. Fix compilation of interim report (#58)

    * Fix use of attribute in introduction
    
    * Fix reference in relational model section
    
    * Fix label in dictionary
    MatBon01 authored Jun 19, 2023
    Copy the full SHA
    a303954 View commit details
  5. Add examples for easy benchmarks and joins (#59)

    * Add table generation command to makefile
    
    * Fix customer parsing test issue
    
    * Test parasing for invoice benchmark
    
    * Print parsing for invoice in invoice benchmark
    
    * Test benchmarking parsing of csv files
    
    * Change table generation directory
    
    * Reformat Customer Parser
    
    * Move example tables
    
    * Print head of customer database in old comprehension example
    
    * Read in both tables correctly for old comprehension example
    
    * Implement old comprehension join
    
    * Impelment modular product join
    
    * Redefine show for bags
    
    * Change output form to a Bag for Old Comprehension
    MatBon01 authored Jun 19, 2023
    Copy the full SHA
    e835c45 View commit details

Commits on Jun 20, 2023

  1. Add Haskell testing to pipeline (#61)

    * Add testing for Haskell
    
    * Update dependencies
    
    * Use updated action to install ghc
    
    * Add test feedback on Haskell pipeline
    
    * Add sha to status
    
    * Add permission to write statuses
    
    * Fix incorrect status name
    
    * Change workflow triggers
    MatBon01 authored Jun 20, 2023
    Copy the full SHA
    3cebf99 View commit details
  2. Move python out of app directory (#62)

    * Move databasegen from app directory
    
    It is not Haskell so I think should be somewhere else
    
    * Refactor common example attributes
    MatBon01 authored Jun 20, 2023
    Copy the full SHA
    ad55bb0 View commit details
  3. Update gitignore (#64)

    * Add python files to gitignore
    
    * Remove pycache directories
    MatBon01 authored Jun 20, 2023
    Copy the full SHA
    c29130f View commit details
Showing with 116,361 additions and 55 deletions.
  1. +107 −0 .github/workflows/haskell-lint.yml
  2. +86 −0 .github/workflows/haskell.yml
  3. +103 −5 .github/workflows/release.yml
  4. +25 −23 .github/workflows/{check.yml → report.yml}
  5. +166 −0 .gitignore
  6. +5 −0 CHANGELOG.md
  7. +34 −13 Makefile
  8. +11 −4 README.md
  9. +9 −0 analysis/README.md
  10. +1,389 −0 analysis/joinbench.ipynb
  11. +12 −0 analysis/pyproject.toml
  12. +125 −0 analysis/src/joinbench/benchmark_data.py
  13. +86 −0 analysis/src/joinbench/benchmark_group.py
  14. +103 −0 analysis/src/joinbench/benchmark_group_plotter.py
  15. +66 −0 analysis/src/joinbench/benchmark_group_table_generator.py
  16. +86 −0 analysis/src/joinbench/benchmark_plotter.py
  17. +44 −0 analysis/src/joinbench/evaluation_method_plotter.py
  18. +8 −0 analysis/src/joinbench/tuple_count_comparison_plotter.py
  19. +176 −0 analysis/test/joinbench/test_benchmark_data.py
  20. +123 −0 analysis/test/joinbench/test_benchmark_group.py
  21. +10 −0 analysis/test/joinbench/test_benchmark_group_plotter.py
  22. +10 −0 analysis/test/joinbench/test_benchmark_plotter.py
  23. +1 −0 analysis/test/joinbench/test_data/joinbench1000.json
  24. +1 −0 analysis/test/joinbench/test_data/joinbench127.json
  25. +14 −0 analysis/test/joinbench/test_data/test_benchmark_group_table_generator.py
  26. +1 −0 analysis/test/joinbench/test_data/test_data.json
  27. +10 −0 analysis/test/joinbench/test_evaluation_method_plotter.py
  28. +26 −0 analysis/test/joinbench/test_tuple_count_comparison_plotter.py
  29. +99 −0 analysis/test/test_utils/benchmark_utils.py
  30. +163 −0 app/.gitignore
  31. +27 −0 app/BenchmarkUtils.hs
  32. +63 −0 app/InvoiceBenchmark.hs
  33. +33 −0 app/JoinBenchBenchmark.hs
  34. +31 −0 app/JoinBenchWHNFBenchmark.hs
  35. +7 −0 app/README.md
  36. +85 −0 app/examples/AppendixExample.hs
  37. +17 −0 app/examples/invoice/ComprehensionEquijoinExample.hs
  38. +15 −0 app/examples/invoice/IndexedEquijoinExample.hs
  39. +17 −0 app/examples/invoice/NewComprehensionExample.hs
  40. +15 −0 app/examples/invoice/ProductEquijoinExample.hs
  41. +24 −0 app/examples/invoice/Utils.hs
  42. +9 −0 app/examples/joinbench/ComprehensionEquijoinExample.hs
  43. +13 −0 app/examples/joinbench/IndexedEquijoinExample.hs
  44. +9 −0 app/examples/joinbench/ProductEquijoinExample.hs
  45. +139 −0 cabal.project.freeze
  46. +190 −0 conda-env.txt
  47. +5 −0 data/README.md
  48. +1 −0 data/joinbench10.json
  49. +1 −0 data/joinbench100.json
  50. +1 −0 data/joinbench1000.json
  51. +1 −0 data/joinbench10000.json
  52. +1 −0 data/joinbench2000.json
  53. +1 −0 data/joinbench25.json
  54. +1 −0 data/joinbench250.json
  55. +1 −0 data/joinbench3000.json
  56. +1 −0 data/joinbench4000.json
  57. +1 −0 data/joinbench50.json
  58. +1 −0 data/joinbench500.json
  59. +1 −0 data/joinbench5000.json
  60. +1 −0 data/joinbench6000.json
  61. +1 −0 data/joinbench7000.json
  62. +1 −0 data/joinbench750.json
  63. +1 −0 data/joinbench8000.json
  64. +1 −0 data/joinbench9000.json
  65. +1 −0 data/whnf/joinbench1000.json
  66. +9 −0 database_generation/Makefile
  67. 0 database_generation/Pipfile
  68. +12 −0 database_generation/pyproject.toml
  69. +11 −0 database_generation/src/databasegen/README.md
  70. 0 database_generation/src/databasegen/__init__.py
  71. 0 database_generation/src/databasegen/configuration/__init__.py
  72. +15 −0 database_generation/src/databasegen/configuration/basic_table_configuration.py
  73. +8 −0 database_generation/src/databasegen/configuration/table_configuration.py
  74. +2,000 −0 database_generation/src/databasegen/first-names.csv
  75. +65 −0 database_generation/src/databasegen/generate_JOINBENCH_database.py
  76. +216 −0 database_generation/src/databasegen/generate_customer_database.py
  77. +1,000 −0 database_generation/src/databasegen/surnames.csv
  78. 0 database_generation/src/databasegen/tablegen/__init__.py
  79. 0 database_generation/src/databasegen/tablegen/cells/__init__.py
  80. +15 −0 database_generation/src/databasegen/tablegen/cells/amount_cell.py
  81. +3 −0 database_generation/src/databasegen/tablegen/cells/cell.py
  82. +10 −0 database_generation/src/databasegen/tablegen/cells/counter_cell.py
  83. +74 −0 database_generation/src/databasegen/tablegen/cells/date_cell.py
  84. +33 −0 database_generation/src/databasegen/tablegen/cells/duplicated_cell.py
  85. +17 −0 database_generation/src/databasegen/tablegen/cells/even_integer_cell.py
  86. +16 −0 database_generation/src/databasegen/tablegen/cells/id_cell.py
  87. +19 −0 database_generation/src/databasegen/tablegen/cells/odd_integer_cell.py
  88. +13 −0 database_generation/src/databasegen/tablegen/cells/random_choice_cell.py
  89. +16 −0 database_generation/src/databasegen/tablegen/cells/random_integer_range_cell.py
  90. +23 −0 database_generation/src/databasegen/tablegen/cells/random_modified_integer_range.py
  91. +15 −0 database_generation/src/databasegen/tablegen/cells/random_modified_modular_integer_cell.py
  92. +18 −0 database_generation/src/databasegen/tablegen/cells/random_modular_integer_cell.py
  93. +18 −0 database_generation/src/databasegen/tablegen/cells/tracking_cell.py
  94. +22 −0 database_generation/src/databasegen/tablegen/cells/unique_cell.py
  95. +21 −0 database_generation/src/databasegen/tablegen/csv_table_generator.py
  96. +11 −0 database_generation/src/databasegen/tablegen/record_generator.py
  97. +12 −0 database_generation/src/databasegen/tablegen/table_generator.py
  98. +20 −0 database_generation/tests/databasegen/tablegen/cells/test_counter_cell.py
  99. +28 −0 database_generation/tests/databasegen/tablegen/cells/test_even_integer_cell.py
  100. +31 −0 database_generation/tests/databasegen/tablegen/cells/test_odd_integer_cell.py
  101. +41 −0 database_generation/tests/databasegen/tablegen/cells/test_random_integer_range_cell.py
  102. +65 −0 database_generation/tests/databasegen/tablegen/cells/test_random_modified_integer_range.py
  103. +63 −0 database_generation/tests/databasegen/tablegen/cells/test_random_modified_modular_integer.py
  104. +31 −0 database_generation/tests/databasegen/tablegen/cells/test_random_modular_integer_cell.py
  105. 0 database_generation/tests/test_utils/__init__.py
  106. +24 −0 database_generation/tests/test_utils/range_test_helper.py
  107. +0 −10 interim.tex
  108. +170 −0 joinbench.cabal
  109. +285 −0 report/.hunspell
  110. +26 −0 report/Makefile
  111. +5 −0 report/appendix/appendices.tex
  112. +2 −0 report/appendix/appendix.tex
  113. +12 −0 report/appendix/userguide.tex
  114. +8 −0 report/background/background.tex
  115. +627 −0 report/background/benchmarking.tex
  116. +157 −0 report/background/categorytheory.tex
  117. +112 −0 report/background/databaserepresentation.tex
  118. +22 −0 report/background/final.tex
  119. +7 −0 report/background/haskellimplementation.tex
  120. +22 −0 report/background/interim.tex
  121. +282 −0 report/background/relationalmodel.tex
  122. +104 −0 report/background/utils.sty
  123. +63 −0 report/bibs/benchmarking-handbook.bib
  124. +557 −0 report/bibs/combined.bib
  125. +16 −0 report/bibs/instructions.txt
  126. +2 −0 report/code/Makefile
  127. +132 −0 report/code/allcode.lhs
  128. +6 −0 report/code/bagDef.tex
  129. +48 −0 report/code/bagDefAndEquality.tex
  130. +40 −0 report/code/commonPointedSetImplementations.tex
  131. +10 −0 report/code/comprehensionEquijoin.tex
  132. +6 −0 report/code/cpTypeSignature.tex
  133. +6 −0 report/code/indexSchoolAndGrade.tex
  134. +21 −0 report/code/indexedEquijoin.tex
  135. +19 −0 report/code/indexedEquijoinTypeSignatures.tex
  136. +23 −0 report/code/introFunctionTypes.tex
  137. +15 −0 report/code/introRecordExample.tex
  138. +259 −0 report/code/lhs2tex.tex
  139. +44 −0 report/code/normalForm.tex
  140. +20 −0 report/code/pointedSetDef.tex
  141. +17 −0 report/code/presSchoolGradeMerge.tex
  142. +16 −0 report/code/productEquijoin.tex
  143. +6 −0 report/code/reduceMergedSchoolAndGrade.tex
  144. +6 −0 report/code/selectTypeSignature.tex
  145. +70 −0 report/code/word16Key.tex
  146. +82 −0 report/conclusion/conclusion.tex
  147. +16 −0 report/ethics/ethicalissues.tex
  148. BIN report/ethics/ethics-checklist-ug.xlsx
  149. +21 −0 report/ethics/final.tex
  150. +5 −0 report/ethics/interim.tex
  151. +204 −0 report/evaluation/benchmark.tex
  152. +55 −0 report/evaluation/databaseimplementation.tex
  153. +7 −0 report/evaluation/evaluation.tex
  154. +22 −0 report/evaluation/evaluationplan.tex
  155. +172 −0 report/evaluation/syntheticdatabase.tex
  156. +609 −0 report/figures/eval-method-join-evenOnePercent-and-oddOnePercent-1000.pgf
  157. +634 −0 report/figures/eval-method-join-onePercent-and-fiftyPercent-1000.pgf
  158. +609 −0 report/figures/eval-method-join-onePercent-and-onePercent-1000.pgf
  159. +634 −0 report/figures/eval-method-join-onePercent-and-twentyPercent-1000.pgf
  160. +634 −0 report/figures/eval-method-join-twentyPercent-and-onePercent-1000.pgf
  161. +1,350 −0 report/figures/indexed-equijoin-query-comparison.pgf
  162. +465 −0 report/figures/join-evenOnePercent-and-oddOnePercent-1000.pgf
  163. +465 −0 report/figures/join-evenOnePercent-and-oddOnePercent-10000.pgf
  164. +415 −0 report/figures/join-evenOnePercent-and-oddOnePercent-5000.pgf
  165. +779 −0 report/figures/join-evenOnePercent-and-oddOnePercent-by-tuple-smallest.pgf
  166. +1,499 −0 report/figures/join-evenOnePercent-and-oddOnePercent-by-tuple-with-inset.pgf
  167. +1,014 −0 report/figures/join-evenOnePercent-and-oddOnePercent-by-tuples.pgf
  168. +490 −0 report/figures/join-onePercent-and-fiftyPercent-1000.pgf
  169. +490 −0 report/figures/join-onePercent-and-fiftyPercent-10000.pgf
  170. +415 −0 report/figures/join-onePercent-and-fiftyPercent-5000.pgf
  171. +904 −0 report/figures/join-onePercent-and-fiftyPercent-by-tuple-smallest.pgf
  172. +1,524 −0 report/figures/join-onePercent-and-fiftyPercent-by-tuple-with-inset.pgf
  173. +1,039 −0 report/figures/join-onePercent-and-fiftyPercent-by-tuples.pgf
  174. +465 −0 report/figures/join-onePercent-and-onePercent-1000.pgf
  175. +465 −0 report/figures/join-onePercent-and-onePercent-10000.pgf
  176. +390 −0 report/figures/join-onePercent-and-onePercent-5000.pgf
  177. +879 −0 report/figures/join-onePercent-and-onePercent-by-tuple-smallest.pgf
  178. +1,474 −0 report/figures/join-onePercent-and-onePercent-by-tuple-with-inset.pgf
  179. +1,014 −0 report/figures/join-onePercent-and-onePercent-by-tuples.pgf
  180. +490 −0 report/figures/join-onePercent-and-twentyPercent-1000.pgf
  181. +490 −0 report/figures/join-onePercent-and-twentyPercent-10000.pgf
  182. +415 −0 report/figures/join-onePercent-and-twentyPercent-5000.pgf
  183. +904 −0 report/figures/join-onePercent-and-twentyPercent-by-tuple-smallest.pgf
  184. +1,524 −0 report/figures/join-onePercent-and-twentyPercent-by-tuple-with-inset.pgf
  185. +1,039 −0 report/figures/join-onePercent-and-twentyPercent-by-tuples.pgf
  186. +622 −0 report/figures/join-onePercent-and-twentyPercent-flipped-10000-tuples.pgf
  187. +547 −0 report/figures/join-onePercent-and-twentyPercent-flipped-5000-tuples.pgf
  188. +597 −0 report/figures/join-onePercent-and-twentyPercent-flipped-6000-tuples.pgf
  189. +522 −0 report/figures/join-onePercent-and-twentyPercent-flipped-7000-tuples.pgf
  190. +572 −0 report/figures/join-onePercent-and-twentyPercent-flipped-8000-tuples.pgf
  191. +622 −0 report/figures/join-onePercent-and-twentyPercent-flipped-9000-tuples.pgf
  192. +490 −0 report/figures/join-twentyPercent-and-onePercent-1000.pgf
  193. +465 −0 report/figures/join-twentyPercent-and-onePercent-10000.pgf
  194. +415 −0 report/figures/join-twentyPercent-and-onePercent-5000.pgf
  195. +904 −0 report/figures/join-twentyPercent-and-onePercent-by-tuple-smallest.pgf
  196. +1,499 −0 report/figures/join-twentyPercent-and-onePercent-by-tuple-with-inset.pgf
  197. +1,014 −0 report/figures/join-twentyPercent-and-onePercent-by-tuples.pgf
  198. +633 −0 report/figures/non-standard-query-with-1000-tuples.pgf
  199. +608 −0 report/figures/non-standard-query-with-10000-tuples.pgf
  200. +558 −0 report/figures/non-standard-query-with-5000-tuples.pgf
  201. +724 −0 report/figures/onePercent-joins-with-1000-tuples.pgf
  202. +724 −0 report/figures/onePercent-joins-with-10000-tuples.pgf
  203. +699 −0 report/figures/onePercent-joins-with-3000-tuples.pgf
  204. +649 −0 report/figures/onePercent-joins-with-5000-tuples.pgf
  205. +1,350 −0 report/figures/pres-Indexed-equijoin.pgf
  206. +574 −0 report/figures/pres-join-onePercent-1000-tuples.pgf
  207. +1,474 −0 report/figures/pres-join-onePercent-and-onePercent.pgf
  208. +134 −0 report/final.tex
  209. +52 −0 report/interim.tex
  210. +137 −0 report/introduction/final.tex
  211. +5 −0 report/introduction/interim.tex
  212. +27 −0 report/introduction/introduction.tex
  213. +67 −0 report/packages.tex
  214. +231 −0 report/presentation.tex
  215. +18 −0 report/project/benchmark/benchmark.tex
  216. +107 −0 report/project/benchmark/database.tex
  217. +291 −0 report/project/benchmark/databasecreation.tex
  218. +21 −0 report/project/benchmark/experiment.tex
  219. +102 −0 report/project/benchmark/functions.tex
  220. +80 −0 report/project/benchmark/queries.tex
  221. +280 −0 report/project/benchmark/results.tex
  222. +91 −0 report/project/benchmark/workflow.tex
  223. +128 −0 report/project/database/database.tex
  224. +5 −0 report/project/project.tex
  225. +44 −0 report/project/projectplan.tex
  226. +8 −0 report/tables/percentage-change-of-means-join-evenOnePercent-and-oddOnePercent.tex
  227. +8 −0 report/tables/percentage-change-of-means-join-onePercent-and-onePercent.tex
  228. +8 −0 report/tables/percentage-change-of-means-join-twentyPercent-and-onePercent.tex
  229. +9 −0 report/tables/std-dev-comparison-join-evenOnePercent-and-oddOnePercent.tex
  230. +9 −0 report/tables/std-dev-comparison-join-onePercent-and-fiftyPercent.tex
  231. +9 −0 report/tables/std-dev-comparison-join-onePercent-and-onePercent.tex
  232. +23 −0 report/title/abstract.tex
  233. +35 −0 report/title/acknowledgements.tex
  234. +5,283 −0 report/title/logo.eps
  235. +72 −0 report/title/title.tex
  236. +8 −0 report/title/titlestructure.sty
  237. +78 −0 src/Data/Bag.hs
  238. +15 −0 src/Data/CMonoid.hs
  239. +64 −0 src/Data/Key.hs
  240. +15 −0 src/Data/PointedSet.hs
  241. +58 −0 src/Database/Bag.hs
  242. +27 −0 src/Database/IndexedTable.hs
  243. +39 −0 src/Text/Parser/Customers.hs
  244. +55 −0 src/Text/Parser/Invoices.hs
  245. +65 −0 src/Text/Parser/JoinBenchTable.hs
  246. +9 −0 src/Text/Parser/Utils.hs
  247. +4 −0 tables/README.md
  248. +10 −0 tables/joinbenchtable10.csv
  249. +100 −0 tables/joinbenchtable100.csv
  250. +1,000 −0 tables/joinbenchtable1000.csv
  251. +10,000 −0 tables/joinbenchtable10000.csv
  252. +2,000 −0 tables/joinbenchtable2000.csv
  253. +25 −0 tables/joinbenchtable25.csv
  254. +250 −0 tables/joinbenchtable250.csv
  255. +3,000 −0 tables/joinbenchtable3000.csv
  256. +4,000 −0 tables/joinbenchtable4000.csv
  257. +50 −0 tables/joinbenchtable50.csv
  258. +500 −0 tables/joinbenchtable500.csv
  259. +5,000 −0 tables/joinbenchtable5000.csv
  260. +6,000 −0 tables/joinbenchtable6000.csv
  261. +7,000 −0 tables/joinbenchtable7000.csv
  262. +750 −0 tables/joinbenchtable750.csv
  263. +8,000 −0 tables/joinbenchtable8000.csv
  264. +9,000 −0 tables/joinbenchtable9000.csv
  265. +115 −0 test/Data/BagSpec.hs
  266. +20 −0 test/Data/CMonoidSpec.hs
  267. +62 −0 test/Data/KeySpec.hs
  268. +16 −0 test/Data/PointedSetSpec.hs
  269. +75 −0 test/Database/BagSpec.hs
  270. +138 −0 test/Database/BagSpecData.hs
  271. +50 −0 test/Database/IndexedTableSpec.hs
  272. +1 −0 test/Spec.hs
  273. +16 −0 test/Text/Parser/CustomersSpec.hs
  274. +16 −0 test/Text/Parser/InvoicesSpec.hs
  275. +21 −0 test/Text/Parser/JoinBenchTableSpec.hs
  276. +2 −0 test/Text/Parser/customertest.csv
  277. +3 −0 test/Text/Parser/invoicestest.csv
  278. +2 −0 test/Text/Parser/joinbenchtest.csv
107 changes: 107 additions & 0 deletions .github/workflows/haskell-lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
name: Haskell linting

on:
pull_request:
push:

jobs:
hlint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: 'Set up HLint'
uses: haskell/actions/hlint-setup@v2


- name: Set hlint status to pending
uses: Sibz/github-status-action@v1
with:
authToken: ${{secrets.GITHUB_TOKEN}}
context: "hlint"
description: "Haskell linting"
state: "pending"
sha: ${{github.event.pull_request.head.sha || github.sha}}

- name: 'Run HLint'
id: lint
continue-on-error: true
uses: haskell/actions/hlint-run@v2
with:
path: '["src/", "test/", "app/"]'
fail-on: warning

- name: Report linting failure to status
if: ${{ steps.lint.outcome == 'failure' }}
uses: Sibz/github-status-action@v1
with:
authToken: ${{secrets.GITHUB_TOKEN}}
context: "hlint"
description: "Errors and/or warnings detected in Haskell files"
state: "failure"
sha: ${{github.event.pull_request.head.sha || github.sha}}
- name: Report linting failure to user
if: ${{ steps.lint.outcome == 'failure' }}
run: echo -e "::warning title=Haskell linting report::Errors and/or warnings detected in haskell files"

- name: Report test success status
if: ${{ steps.lint.outcome == 'success' }}
uses: Sibz/github-status-action@v1
with:
authToken: ${{secrets.GITHUB_TOKEN}}
context: "hlint"
description: "No linting errors were found in Haskell source files"
state: "success"
sha: ${{github.event.pull_request.head.sha || github.sha}}

- name: Report test success
if: ${{ steps.lint.outcome == 'success' }}
run: echo "::notice title=Haskell test report::No linting errors were found in Haskell source files"

fourmolu:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Set fourmolu status to pending
uses: Sibz/github-status-action@v1
with:
authToken: ${{secrets.GITHUB_TOKEN}}
context: "fourmolu"
description: "Haskell formatting"
state: "pending"
sha: ${{github.event.pull_request.head.sha || github.sha}}

- name: 'Run fourmolu'
id: format
continue-on-error: true
uses: haskell-actions/run-fourmolu@v9
with:
version: "0.13.0.0"

- name: Report formatting failure to status
if: ${{ steps.format.outcome == 'failure' }}
uses: Sibz/github-status-action@v1
with:
authToken: ${{secrets.GITHUB_TOKEN}}
context: "fourmolu"
description: "There were formatting errors in Haskell files"
state: "failure"
sha: ${{github.event.pull_request.head.sha || github.sha}}
- name: Report formatting failure to user
if: ${{ steps.format.outcome == 'failure' }}
run: echo -e "::warning title=Haskell formatting report::There were formatting errors in Haskell files"

- name: Report test success status
if: ${{ steps.format.outcome == 'success' }}
uses: Sibz/github-status-action@v1
with:
authToken: ${{secrets.GITHUB_TOKEN}}
context: "fourmolu"
description: "All Haskell files are correctly formatted"
state: "success"
sha: ${{github.event.pull_request.head.sha || github.sha}}

- name: Report test success
if: ${{ steps.format.outcome == 'success' }}
run: echo "::notice title=Haskell formatting report::All Haskell files are correctly formatted"
86 changes: 86 additions & 0 deletions .github/workflows/haskell.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
name: Haskell CI

on:
pull_request:
branches: [ "main" ]
workflow_dispatch:

permissions:
contents: read
statuses: write

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- uses: haskell/actions/setup@v2
with:
ghc-version: '9.2.7'
cabal-version: '3.6'

- name: Cache
uses: actions/cache@v3
env:
cache-name: cache-cabal
with:
path: ~/.cabal
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/*.cabal') }}-${{ hashFiles('**/cabal.project') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Install dependencies
run: |
cabal update
cabal build --only-dependencies --enable-tests --enable-benchmarks
- name: Build
run: cabal build --enable-tests --enable-benchmarks all



- name: Set test status to pending
uses: Sibz/github-status-action@v1
with:
authToken: ${{secrets.GITHUB_TOKEN}}
context: "Haskell tests"
description: "Testing Haskell code"
state: "pending"
sha: ${{github.event.pull_request.head.sha || github.sha}}
- name: Run tests
id: test
continue-on-error: true
run: cabal test all
- name: Report failure status
if: ${{ steps.test.outcome == 'failure' }}
uses: Sibz/github-status-action@v1
with:
authToken: ${{secrets.GITHUB_TOKEN}}
context: "Haskell tests"
description: "Haskell tests failed"
state: "failure"
sha: ${{github.event.pull_request.head.sha || github.sha}}

- name: Report test failures
if: ${{ steps.test.outcome == 'failure' }}
run: echo -e "::warning title=Haskell test report::Haskell tests failed."

- name: Report test success status
if: ${{ steps.test.outcome == 'success' }}
uses: Sibz/github-status-action@v1
with:
authToken: ${{secrets.GITHUB_TOKEN}}
context: "Haskell tests"
description: "All Haskell tests pass"
state: "success"
sha: ${{github.event.pull_request.head.sha || github.sha}}

- name: Report test success
if: ${{ steps.test.outcome == 'success' }}
run: echo "::notice title=Haskell test report::All tests passed."



108 changes: 103 additions & 5 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -18,10 +18,10 @@ jobs:
description: "Interim report compiling"
state: "pending"
- name: Install latex dependencies
run: sudo apt-get install -y latexmk
run: sudo apt-get install -y latexmk texlive-font-utils texlive-latex-extra texlive-science
- uses: actions/checkout@v3
- name: Compile interim report
run: make interim.pdf
run: make -C report interim.pdf
- name: Show compilation failed on status
uses: Sibz/github-status-action@v1
with:
@@ -48,21 +48,119 @@ jobs:
uses: actions/upload-artifact@v3
with:
name: interim
path: interim.pdf
path: report/interim.pdf

compile-final-report:
name: Compile final report
runs-on: ubuntu-latest
steps:
- name: Set report compilation to pending
uses: Sibz/github-status-action@v1
with:
authToken: ${{secrets.GITHUB_TOKEN}}
context: "Final report compilation"
description: "Final report compiling"
state: "pending"
- name: Install latex dependencies
run: sudo apt-get install -y latexmk texlive-font-utils texlive-latex-extra texlive-science
- uses: actions/checkout@v3
- name: Compile final report
run: make -C report final.pdf
- name: Show compilation failed on status
uses: Sibz/github-status-action@v1
with:
authToken: ${{secrets.GITHUB_TOKEN}}
context: "Final report compilation"
description: "Compilation failed"
state: "failure"
if: ${{ failure() }}
- name: Warn that compilation failed
run: echo "::warning title=Final report compilation report::Compilation failed"
if: ${{ failure() }}
- name: Show compilation succeeded on status
uses: Sibz/github-status-action@v1
with:
authToken: ${{secrets.GITHUB_TOKEN}}
context: "Final report compilation"
description: "Final report compiled"
state: "success"
if: ${{ success () }}
- name: Notice that compilation succeeded
run: echo "::notice title=Final report compilation report::Compilation succeeded"
if: ${{ success () }}
- name: Upload report as artifact
uses: actions/upload-artifact@v3
with:
name: final
path: report/final.pdf

compile-presentation:
name: Compile presentation
runs-on: ubuntu-latest
steps:
- name: Set presentation compilation to pending
uses: Sibz/github-status-action@v1
with:
authToken: ${{secrets.GITHUB_TOKEN}}
context: "Presentation compilation"
description: "Presentation compiling"
state: "pending"
- name: Install latex dependencies
run: sudo apt-get install -y latexmk texlive-font-utils texlive-latex-extra texlive-science
- uses: actions/checkout@v3
- name: Compile presentation
run: make -C report presentation.pdf
- name: Show compilation failed on status
uses: Sibz/github-status-action@v1
with:
authToken: ${{secrets.GITHUB_TOKEN}}
context: "Presentation compilation"
description: "Compilation failed"
state: "failure"
if: ${{ failure() }}
- name: Warn that compilation failed
run: echo "::warning title=Presentation compilation report::Compilation failed"
if: ${{ failure() }}
- name: Show compilation succeeded on status
uses: Sibz/github-status-action@v1
with:
authToken: ${{secrets.GITHUB_TOKEN}}
context: "Presentation compilation"
description: "Presentation compiled"
state: "success"
if: ${{ success () }}
- name: Notice that compilation succeeded
run: echo "::notice title=Presentation compilation report::Compilation succeeded"
if: ${{ success () }}
- name: Upload report as artifact
uses: actions/upload-artifact@v3
with:
name: presentation
path: report/presentation.pdf

create-release:
name: Create release
needs: [compile-interim-report]
needs: [compile-interim-report, compile-final-report, compile-presentation]
runs-on: ubuntu-latest
steps:
- name: Download interim report artifact
uses: actions/download-artifact@v3
with:
name: interim
- name: Download final report artifact
uses: actions/download-artifact@v3
with:
name: final
- name: Download presentation artifact
uses: actions/download-artifact@v3
with:
name: presentation
- uses: "marvinpinto/action-automatic-releases@latest"
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
files: |
interim.pdf
pre-release: true
final.pdf
presentation.pdf
pre-release: false

Loading