- Timestamp:
- 09/22/07 01:04:40 (16 months ago)
- Location:
- ext/Muldis-DB
- Files:
-
- 7 modified
-
Changes (modified) (2 diffs)
-
lib/Muldis/DB/Engine/Example.pm (modified) (1 diff)
-
lib/Muldis/DB/Engine/Example/Operators.pm (modified) (1 diff)
-
lib/Muldis/DB/Engine/Example/PhysType.pm (modified) (1 diff)
-
lib/Muldis/DB/Interface.pm (modified) (4 diffs)
-
lib/Muldis/DB/SeeAlso.pod (modified) (11 diffs)
-
lib/Muldis/DB/Validator.pm (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
ext/Muldis-DB/Changes
r17897 r18088 20 20 t/MDB_10_Literal_Simple.t test file. 21 21 22 * New file versions are: DB.pm and Interface.pm and Validator.pm and 23 Example.pm 0.4.0. The other pre-existing versioned files are 24 unchanged. 22 * All versioned files had their version numbers brought up to 0.4.0. 25 23 26 24 * (DB.pm, Interface.pm, Example.pm) Updates to various … … 28 26 DESCRIPTION of DB.pm. Added a small initial DESCRIPTION to each of 29 27 Interface.pm, Example.pm. Further minor edits to other sections. 28 29 * Minor updates to all versioned files such that most references to the 30 project name were changed to "Muldis DB" from "Muldis::DB". 31 32 * (SeeAlso.pod) Updated the PROSPECTIVE MULDIS DB EXTENSIONS section 33 mainly to bring various names, terminology, and references up to date 34 with design changes. Any package names containing "Literal" now have 35 "PHMD" instead, and any docs refering to "Muldis DB AST nodes" now 36 refer to "Perl Hosted Muldis D". Re-added the 37 Muldis::DB::AST::StringRepr module that was removed in release 0.1.0 38 under the new name Muldis::DB::PHMD::Translate::ConcreteMuldisD (it's 39 not part of Literal.pm anymore). Other small renames and changes. 30 40 31 41 * Updated the TODO file. -
ext/Muldis-DB/lib/Muldis/DB/Engine/Example.pm
r17866 r18088 244 244 =head1 LICENSE AND COPYRIGHT 245 245 246 This file is part of the Muldis ::DB framework.247 248 Muldis ::DB is Copyright © 2002-2007, Darren Duncan.246 This file is part of the Muldis DB framework. 247 248 Muldis DB is Copyright © 2002-2007, Darren Duncan. 249 249 250 250 See the LICENSE AND COPYRIGHT of L<Muldis::DB> for details. -
ext/Muldis-DB/lib/Muldis/DB/Engine/Example/Operators.pm
r17897 r18088 167 167 =head1 LICENSE AND COPYRIGHT 168 168 169 This file is part of the Muldis ::DB framework.169 This file is part of the Muldis DB framework. 170 170 171 Muldis ::DB is Copyright © 2002-2007, Darren Duncan.171 Muldis DB is Copyright © 2002-2007, Darren Duncan. 172 172 173 173 See the LICENSE AND COPYRIGHT of L<Muldis::DB> for details. -
ext/Muldis-DB/lib/Muldis/DB/Engine/Example/PhysType.pm
r17897 r18088 1053 1053 =head1 LICENSE AND COPYRIGHT 1054 1054 1055 This file is part of the Muldis ::DB framework.1056 1057 Muldis ::DB is Copyright © 2002-2007, Darren Duncan.1055 This file is part of the Muldis DB framework. 1056 1057 Muldis DB is Copyright © 2002-2007, Darren Duncan. 1058 1058 1059 1059 See the LICENSE AND COPYRIGHT of L<Muldis::DB> for details. -
ext/Muldis-DB/lib/Muldis/DB/Interface.pm
r17897 r18088 418 418 # Instantiate a Muldis::DB DBMS / virtual machine. 419 419 my $dbms = Muldis::DB::Interface::new_dbms( 420 :engine_name('Muldis::DB::Engine::Example'),421 :dbms_config({}),422 );420 :engine_name('Muldis::DB::Engine::Example'), 421 :dbms_config({}), 422 ); 423 423 424 424 # TODO: Create or connect to a repository and work with it. … … 520 520 =head1 BUGS AND LIMITATIONS 521 521 522 The Muldis ::DB framework for Perl 6 is built with a lot of code that should523 be superfluous, since the Muldis ::DB authors can not yet assume that a522 The Muldis DB framework for Perl 6 is built with a lot of code that should 523 be superfluous, since the Muldis DB authors can not yet assume that a 524 524 number of desired Perl 6 features are actually available in the language 525 implementations yet, and so and so Muldis ::DB includes its own substituted526 implementations of those features, which have been made as part of 527 Muldis::DB for Perl 5 anyway due to Perl 5's relative deficiencies. The525 implementations yet, and so and so Muldis DB includes its own substituted 526 implementations of those features, which have been made as part of Muldis 527 DB for Perl 5 anyway due to Perl 5's relative deficiencies. The 528 528 reimplemented features include manual type-checks of routine arguments (as 529 529 if the parameters were declared C<Any>), and the use of C<Array> rather … … 531 531 than C<Mapping> or C<Hash> (because non-Str keys may not be supported yet). 532 532 Also, explicit clones are made of any "read only" Array or Hash arguments 533 or return values, so to safeguard the Muldis ::DB internals against any534 subsequent mutation of them by callers. Hopefully, Muldis ::DB for Perl 6533 or return values, so to safeguard the Muldis DB internals against any 534 subsequent mutation of them by callers. Hopefully, Muldis DB for Perl 6 535 535 will be able to have its code base slimmed considerably when the Perl 6 536 536 implementations themselves are more mature. … … 544 544 =head1 LICENSE AND COPYRIGHT 545 545 546 This file is part of the Muldis ::DB framework.547 548 Muldis ::DB is Copyright © 2002-2007, Darren Duncan.546 This file is part of the Muldis DB framework. 547 548 Muldis DB is Copyright © 2002-2007, Darren Duncan. 549 549 550 550 See the LICENSE AND COPYRIGHT of L<Muldis::DB> for details. -
ext/Muldis-DB/lib/Muldis/DB/SeeAlso.pod
r17127 r18088 16 16 This document is a central location within the L<Muldis::DB> distribution 17 17 where any important recommendations of or links to external resources go. 18 This includes both resources that were helpful in making Muldis ::DB, as19 well as resources that are or could be related to Muldis ::DB.18 This includes both resources that were helpful in making Muldis DB, as 19 well as resources that are or could be related to Muldis DB. 20 20 21 21 =head1 FORMAL SPECIFICATION … … 28 28 formal implementation of by way of Muldis D. 29 29 30 =head1 LIST OF PUBLIC M uldis::DB ENGINES30 =head1 LIST OF PUBLIC MULDIS DB ENGINES 31 31 32 32 I<This documentation is pending.> … … 34 34 L<Muldis::DB::Engine::Example>. 35 35 36 =head1 PROSPECTIVE M uldis::DB EXTENSIONS36 =head1 PROSPECTIVE MULDIS DB EXTENSIONS 37 37 38 38 These are some theoretical examples of other Perl modules or documentation 39 that could be created to work with Muldis ::DB, but if so would most likely39 that could be created to work with Muldis DB, but if so would most likely 40 40 be distributed independently from it. The given package names are 41 41 examples, and the examples in question could have other names if … … 47 47 48 48 Pod files with a potentially large collection of examples, tutorials, FAQs, 49 and so on that help people learn how to employ Muldis ::DB for the things49 and so on that help people learn how to employ Muldis DB for the things 50 50 they need to do. In particular, there should be a lot of help given for 51 51 people migrating from other systems that use different paradigms than 52 Muldis ::DB does, for example SQL-using systems.52 Muldis DB does, for example SQL-using systems. 53 53 54 54 The Cookbook distro may also be the main repository of executing code that 55 would otherwise go in the /examples directory of the Muldis ::DB core55 would otherwise go in the /examples directory of the Muldis DB core 56 56 distro. 57 57 … … 59 59 C<Muldis::DB::Engine::Genezzo> etc 60 60 61 A Muldis ::DB Engine built around Jeffrey Cohen's GenezzoDBMS, or62 specifically the class that does C<Muldis::DB::Engine::Role>, could61 A Muldis DB Engine built around Jeffrey Cohen's L<Genezzo> DBMS, or 62 specifically the root module that provides the C<new_dbms> function, could 63 63 conceivably have either of the above file or package names, depending on 64 64 what its author prefers, or something else yet. A strong name influence 65 could be whether Muldis ::DB forms the sole public interface for Genezzo65 could be whether Muldis DB forms the sole public interface for Genezzo 66 66 after its conversion to use it, or whether Genezzo would retain alternate 67 public APIs that work without Muldis ::DB being present on the system. If68 Muldis ::DB is Genezzo's sole or primary interface, then simply C<Genezzo>67 public APIs that work without Muldis DB being present on the system. If 68 Muldis DB is Genezzo's sole or primary interface, then simply C<Genezzo> 69 69 is probably best for branding. 70 70 71 =item C<Muldis::DB:: Literal::Refactor(|::\w+)>72 73 Utility modules that take Muldis::DB AST node objectsas input and derive74 other nodes as output, such as with the purpose of refactoring them into75 canonical representations (such that users can then perform node value 76 equality tests for potentially any type of node), or forms that are more 77 efficient forparticular uses but are still logically equivalent.71 =item C<Muldis::DB::PHMD::Refactor(|::\w+)> 72 73 Utility modules that take Perl Hosted Muldis D code as input and derive 74 other PHMD code as output, such as with the purpose of refactoring them 75 into canonical representations (such that manual code debugging or 76 comparisons may be made easier), or forms that are more efficient for 77 particular uses but are still logically equivalent. 78 78 79 79 Presumably all of these would work using static analysis methods and not 80 80 actually "execute" anything, so they are independent of any particular 81 81 Engine environment. This isn't to say that we can't separately have 82 modules that help implement a specific Engine and do ASToptimization that82 modules that help implement a specific Engine and do PHMD optimization that 83 83 knows the specific needs of that Engine's implementation environment. 84 84 … … 86 86 C<Canon>, or whatever authors prefer. 87 87 88 =item C<Muldis::DB:: Literal::YAML> and C<Muldis::DB::Literal::XML> etc89 90 Utility modules that serialize Muldis::DB AST nodes to, or unserialize them88 =item C<Muldis::DB::PHMD::YAML> and C<Muldis::DB::PHMD::XML> etc 89 90 Utility modules that serialize Perl Hosted Muldis D to, or unserialize it 91 91 from, logically equivalent YAML, XML, or other generic data interchange 92 92 formats. This implementation should be native to the Muldis D language … … 95 95 between Perl 5 and Perl 6. 96 96 97 =item C<Muldis::DB::PHMD::Translate::ConcreteMuldisD> 98 99 Utility module that parses Concrete Muldis D (character strings) into Perl 100 Hosted Muldis D (tree of Perl Arrays etc), and also that generates the 101 former from the latter. The 2 formats should basically have a 1:1 102 correspondence. 103 97 104 =item C<Muldis::DB::Shell> 98 105 99 Implementation of a command-line user application over the Muldis::DB API 100 that takes string-form Muldis D as input, compiles it and runs it, and 101 nicely formats output for user display. This is analogous to 102 L<DBI::Shell>. 103 104 =item C<DBD::Muldis::DB> 105 106 A wrapper over the Muldis::DB API that makes it work as a L<DBI> driver 106 Implementation of a command-line user application over the Muldis DB API 107 that takes Concrete Muldis D as input, compiles it and runs it, and nicely 108 formats output for user display. This is analogous to L<DBI::Shell>. 109 110 =item C<DBD::MuldisDB> 111 112 A wrapper over the Muldis DB API that makes it work as a L<DBI> driver 107 113 module, should that be useful. Depending on what DBI itself permits or 108 114 requires, this could take a variety of query definition formats, including 109 either or both of AST form or string form (most likely)Muldis D.110 111 =item C<Muldis::DB:: Literal::Translate::TutorialD> etc112 113 Utility module that parses the B<Tutorial D> language into Muldis::DB AST114 nodes, and also that generates the former from the latter. Mainly this is 115 just by-the-book using the grammar published by Darwen and Date, but it 116 could also handle compatible extensions by other B<D> language115 either or both of Concrete Muldis D or (most likely) Perl Hosted Muldis D. 116 117 =item C<Muldis::DB::PHMD::Translate::TutorialD> etc 118 119 Utility module that parses the B<Tutorial D> language into Perl Hosted 120 Muldis D code, and also that generates the former from the latter. Mainly 121 this is just by-the-book using the grammar published by Darwen and Date, 122 but it could also handle compatible extensions by other B<D> language 117 123 implementations. In addition, separate utility modules can be made which 118 124 translate to and from other B<D> languages that don't look like B<Tutorial 119 125 D>. 120 126 121 =item C<Muldis::DB:: Literal::Translate::SQL::Native>122 123 Utility module that parses a Muldis ::DB-native variant of SQL into124 Muldis::DB AST nodes, and also that generates the former from the latter.127 =item C<Muldis::DB::PHMD::Translate::SQL::Native> 128 129 Utility module that parses a Muldis DB-native variant of SQL into 130 Perl Hosted Muldis D, and also that generates the former from the latter. 125 131 This SQL variant is essentially a cleaned up subset of the SQL:2003 126 132 standard, with some misfeatures removed, some missing features added, and 127 133 some alterations common in other SQL DBMSs substituted or added. Or 128 134 alternately, it is like a subset of Muldis D made to look as much like SQL 129 as possible. This Muldis ::DB-native SQL variant always has distinct column135 as possible. This Muldis DB-native SQL variant always has distinct column 130 136 names in rowsets, requires matching column names for inputs to 131 137 union/intersect/etc, never stores or results in duplicate rows, always uses … … 137 143 and what actually happens to implement it. 138 144 139 =item C<Muldis::DB:: Literal::Translate::SQL::\w+>145 =item C<Muldis::DB::PHMD::Translate::SQL::\w+> 140 146 141 147 Utility modules that parse other variants of SQL (or subsets thereof) into 142 Muldis::DB AST nodes, and also that generate the former from the latter.148 Perl Hosted Muldis D, and also that generate the former from the latter. 143 149 Examples of these variants are the actual SQL:2003 standard, and the native 144 150 dialects of each actual SQL DBMS. 145 151 146 =item C<Muldis::DB:: Literal::Translate::\w+>152 =item C<Muldis::DB::PHMD::Translate::\w+> 147 153 148 154 Utility modules that translate data (including code and declaratives) 149 between representations that are Muldis::DB AST nodesand representations155 between representations that are Perl Hosted Muldis D and representations 150 156 that aren't, or between 2 of the latter kind while using the former kind as 151 157 an intermediate representation. Besides the aforementioned possibilities … … 157 163 =item C<Muldis::DB::Proxy::(Server|Client|\w+)> 158 164 159 Implementation(s) of a generic proxy server plus client for the Muldis ::DB160 API, letting the normal Muldis ::DB Engine and the user application reside161 in separate processes. The client modulewould do162 C<Muldis::DB:: Engine::Role>and the server would be an application or163 server-extending plugin that sits on top of the Muldis ::DB API. Or165 Implementation(s) of a generic proxy server plus client for the Muldis DB 166 API, letting the normal Muldis DB Engine and the user application reside 167 in separate processes. The client would do 168 C<Muldis::DB::Interface> roles and the server would be an application or 169 server-extending plugin that sits on top of the Muldis DB API. Or 164 170 whatever implementers want to do. This is analogous to proxying modules 165 171 for DBI or other DBMSs. … … 167 173 =item C<Muldis::DB::Engine::(SQLite|Postgres|Oracle|\w+)> 168 174 169 A default (but not mandatory) namespace for Muldis::DB Engines to go, that 170 do C<Muldis::DB::Engine::Role(|::\w+)>. A lot of these would likely be 171 implemented over existing DBMSs, which results in Muldis::DB being an 172 alternative API for them. 173 174 =item C<DBIx::Class::Storage::Muldis::DB> etc 175 176 An alternative plug-in storage engine for DBIx::Class that uses Muldis::DB 177 rather than DBI. Analogous extensions can be added to other DBI wrappers 178 modules such as Tangram or Rose::DB or what have you. In either case, said 179 alternatives can either be bundled with the core distros of those other 180 modules, or separately from them, as per their authors' preferences. 175 A default (but not mandatory) namespace for Muldis DB Engines to go, that 176 provide the C<new_dbms> function and do the C<Muldis::DB::Interface::\w+> 177 roles. A lot of these would likely be implemented over existing DBMSs, 178 which results in Muldis DB being an alternative API for them. 179 180 =item C<DBIx::Class::Storage::MuldisDB> etc 181 182 An alternative plug-in storage engine for L<DBIx::Class> that uses Muldis 183 DB rather than DBI. Analogous extensions can be added to other DBI 184 wrappers modules such as L<Tangram> or L<Rose::DB> or what have you. In 185 either case, said alternatives can either be bundled with the core distros 186 of those other modules, or separately from them, as per their authors' 187 preferences. 181 188 182 189 =item C<Muldis::DB::Emulator::(DBI|JDBC|OCI|\w+)> 183 190 184 Emulations of other modules or APIs as wrappers over Muldis ::DB. This is191 Emulations of other modules or APIs as wrappers over Muldis DB. This is 185 192 potentially the easiest way, short of the other modules themselves being 186 appropriately updated, to permit migration for legacy apps to Muldis ::DB193 appropriately updated, to permit migration for legacy apps to Muldis DB 187 194 while they have the fewest actual code changes. The emulators would likely 188 195 employ SQL translator utilities internally. 189 196 190 =item C<Muldis ::DBx::\w+>191 192 Unofficial extensions to Muldis ::DB could be named in this space, though it197 =item C<MuldisX::DB::\w+> 198 199 Unofficial extensions to Muldis DB could be named in this space, though it 193 200 doesn't have to be used if prior coordination happens between developers. 194 201 195 202 =back 196 203 197 =head1 PUBLIC SOLUTIONS BUILT OVER M uldis::DB204 =head1 PUBLIC SOLUTIONS BUILT OVER MULDIS DB 198 205 199 206 I<This documentation is pending.> 200 207 201 208 These Perl 5 applications and frameworks are, perhaps, at the front of the 202 line to get Muldis ::DB bindings: L<Jifty>, L<Catalyst>, L<Maypole>,209 line to get Muldis DB bindings: L<Jifty>, L<Catalyst>, L<Maypole>, 203 210 L<Bricolage>, L<RT>. Generally speaking, the more active the development 204 211 or the more popular the project, the higher the priority to support it. … … 236 243 =head1 LICENSE AND COPYRIGHT 237 244 238 This file is part of the Muldis ::DB framework.239 240 Muldis ::DB is Copyright © 2002-2007, Darren Duncan.245 This file is part of the Muldis DB framework. 246 247 Muldis DB is Copyright © 2002-2007, Darren Duncan. 241 248 242 249 See the LICENSE AND COPYRIGHT of L<Muldis::DB> for details. -
ext/Muldis-DB/lib/Muldis/DB/Validator.pm
r17897 r18088 18 18 say "#### Muldis::DB::Validator starting test of $engine_name ####"; 19 19 20 # Instantiate a Muldis ::DB DBMS / virtual machine.20 # Instantiate a Muldis DB DBMS / virtual machine. 21 21 my Muldis::DB::Interface::DBMS $dbms = Muldis::DB::Interface::new_dbms( 22 22 :engine_name($engine_name), :dbms_config($dbms_config) ); … … 35 35 (Muldis::DB::Interface::DBMS $dbms!) { 36 36 37 # Declare our example executable code as Muldis ::DB ASTs.37 # Declare our example executable code as Muldis DB ASTs. 38 38 39 39 my $tynm_Text = ::Muldis::DB::Literal::EntityName.new( :text<sys.type.Text> ); … … 177 177 ); 178 178 179 # Declare our example literal source data sets as Muldis ::DB ASTs.179 # Declare our example literal source data sets as Muldis DB ASTs. 180 180 181 181 my $rel_def_suppliers = ::Muldis::DB::Literal::Relation.new( … … 330 330 # Run the test suite. 331 331 Muldis::DB::Validator::main( 332 :engine_name('Muldis::DB::Engine::Example'),333 :dbms_config({}),334 );332 :engine_name('Muldis::DB::Engine::Example'), 333 :dbms_config({}), 334 ); 335 335 336 336 1; … … 346 346 347 347 The Muldis::DB::Validator Perl 6 module is a common comprehensive test 348 suite to run against all Muldis ::DB Engines. You run it against a349 Muldis ::DB Engine module to ensure that the Engine and/or the database350 behind it implements the parts of the Muldis ::DB API that your application348 suite to run against all Muldis DB Engines. You run it against a 349 Muldis DB Engine module to ensure that the Engine and/or the database 350 behind it implements the parts of the Muldis DB API that your application 351 351 needs, and that the API is implemented correctly. Muldis::DB::Validator is 352 352 intended to guarantee a measure of quality assurance (QA) for Muldis::DB, … … 354 354 of safety. 355 355 356 Alternately, if you are writing a Muldis ::DB Engine module yourself,356 Alternately, if you are writing a Muldis DB Engine module yourself, 357 357 Muldis::DB::Validator saves you the work of having to write your own test 358 358 suite for it. You can also be assured that if your module passes … … 417 417 =head1 LICENSE AND COPYRIGHT 418 418 419 This file is part of the Muldis ::DB framework.420 421 Muldis ::DB is Copyright © 2002-2007, Darren Duncan.419 This file is part of the Muldis DB framework. 420 421 Muldis DB is Copyright © 2002-2007, Darren Duncan. 422 422 423 423 See the LICENSE AND COPYRIGHT of L<Muldis::DB> for details.
