Revision 16181
- Date:
- 2007/05/04 04:45:11
- Files:
Legend:
- Added
- Removed
- Modified
-
ext/QDRDBMS/lib/QDRDBMS/AST.pm
1011 1011 analysis can't decompose; only nodes consisting of just system-defined or 1012 1012 literal entities (meaning zero free variables) can be fully refactored in a 1013 1013 static node analysys (though there are a fair number of those in practice, 1014 particularly as C<Var> values. 1014 particularly as C<Var> values). 1015 1015 1016 1016 A consequence of this is that the QDRDBMS::AST classes in general do not 1017 1017 include do not include any methods for comparing that 2 nodes denote the -
ext/QDRDBMS/lib/QDRDBMS/Copying.pod
23 23 =head1 COMPOSITION 24 24 25 25 For the purposes of this document, the I<QDRDBMS framework core> aka the 26 I<QDRDBMS framework> aka the I<core> is composed entirely of all the files 27 included with this QDRDBMS distribution in its C<lib/> directory. This 28 also includes its main test suite, since that is implemented using modules 29 in C<lib/> such as C<QDRDBMS::Validator>. 26 I<QDRDBMS framework> aka the I<core> is composed entirely of, and only of, 27 all the files included with this QDRDBMS distribution in its C<lib/> 28 directory. This also includes its main test suite, since that is 29 implemented using modules in C<lib/> such as C<QDRDBMS::Validator>. While 30 there are a few other files in this distribution, they are of relatively 31 little importance as far as copyright issues of the QDRDBMS core go, and 32 can be ignored for the purposes of this document. 30 33 31 By contrast, this QDRDBMS distribution may also include some extra files, 32 particularly in its C<examples/> directory, which are explicitly not part 33 of the core, and which may be the copyright of other parties. 34 While this QDRDBMS distribution could potentially have included 35 copyright-significant extra files, particularly in a C<examples/> 36 directory, which are explicitly not part of the core, and which may be the 37 copyright of other parties, such things will instead be distributed 38 separately to keep various matters simpler; in the case of C<examples/>, 39 such would likely be part of a separate C<QDRDBMS::Cookbook> distribution. 34 40 35 41 =head1 OWNERSHIP 36 42 -
ext/QDRDBMS/lib/QDRDBMS/SeeAlso.pod
357 357 358 358 L<QDRDBMS::Engine::Example>. 359 359 360 =head1 PROSPECTIVE QDRDBMS EXTENSIONS 361 362 These are some theoretical examples of other Perl modules or documentation 363 that could be created to work with QDRDBMS, but if so would most likely be 364 distributed independently from it. The given package names are examples, 365 and the examples in question could have other names if approriate. 366 367 =over 368 369 =item C<QDRDBMS::Cookbook(|::\w+)> 370 371 Pod files with a potentially large collection of examples, tutorials, FAQs, 372 and so on that help people learn how to employ QDRDBMS for the things they 373 need to do. In particular, there should be a lot of help given for people 374 migrating from other systems that use different paradigms than QDRDBMS 375 does, for example SQL-using systems. 376 377 The Cookbook distro may also be the main repository of executing code that 378 would otherwise go in the /examples directory of the QDRDBMS core distro. 379 380 =item C<Genezzo> or C<QDRDBMS::Engine::Genezzo> or C<Genezzo::QDRDBMS> etc 381 382 A QDRDBMS Engine built around Jeffrey Cohen's Genezzo DBMS, or specifically 383 the class that does C<QDRDBMS::Engine::Role>, could conceivably have either 384 of the above file or package names, depending on what its author prefers, 385 or something else yet. A strong name influence could be whether QDRDBMS 386 forms the sole public interface for Genezzo after its conversion to use it, 387 or whether Genezzo would retain alternate public APIs that work without 388 QDRDBMS being present on the system. 389 390 =item C<QDRDBMS::AST::Refactor(|::\w+)> 391 392 Utility modules that take QDRDBMS AST node objects as input and derive 393 other nodes as output, such as with the purpose of refactoring them into 394 canonical representations (such that users can then perform node value 395 equality tests for potentially any type of node), or forms that are more 396 efficient for particular uses but are still logically equivalent. 397 398 Presumably all of these would work using static analysis methods and not 399 actually "execute" anything, so they are independent of any particular 400 Engine environment. This isn't to say that we can't separately have 401 modules that help implement a specific Engine and do AST optimization that 402 knows the specific needs of that Engine's implementation environment. 403 404 Other words that could go in such module names are like C<Optimize> or 405 C<Canon>, or whatever authors prefer. 406 407 =item C<QDRDBMS::AST::YAML> and C<QDRDBMS::AST::XML> etc 408 409 Utility modules that serialize QDRDBMS AST nodes to, or unserialize them 410 from, logically equivalent YAML, XML, or other generic data interchange 411 formats. This implementation should be native to the QDRDBMS D language 412 itself and not output any Perl-specific details that aren't in non-Perl 413 languages, so that it is suitable for interchange, at the very least 414 between Perl 5 and Perl 6. 415 416 =item C<QDRDBMS::AST::StringRepr> 417 418 Utility module that parses the string representation format of QDRDBMS D 419 into its AST representation format, and also that generates the former from 420 the latter. The 2 formats should basically have a 1:1 correspondence. 421 422 =item C<QDRDBMS::Shell> 423 424 Implementation of a command-line user application over the QDRDBMS API that 425 takes string-form QDRDBMS D as input, compiles it and runs it, and nicely 426 formats output for user display. This is analagous to L<DBI::Shell>. 427 428 =item C<DBD::QDRDBMS> 429 430 A wrapper over the QDRDBMS API that makes it work as a L<DBI> driver 431 module, should that be useful. Depending on what DBI itself permits or 432 requires, this could take a variety of query definition formats, including 433 either or both of AST form or string form (most likely) QDRDBMS D. 434 435 =item C<QDRDBMS::AST::Translate(|::\w+)> 436 437 Utility modules that translate data (including code and declaratives) 438 between representations that are QDRDBMS AST nodes and representations that 439 aren't, or between 2 of the latter kind while using the former kind as an 440 intermediate representation. As a common example, translations from or to 441 any or all dialects of SQL should be supported. Also, translations from or 442 to other I<D> languages, particularly I<Tutorial D>. Also important is 443 translations to/from native Perl data structures, including native Perl 444 routine definitions (L<PPI> would probably be employed in the Perl 5 445 version), and including commonly used third party class' objects. 446 447 =item C<QDRDBMS::Proxy::(Server|Client|\w+)> 448 449 Implementation(s) of a generic proxy server plus client for the QDRDBMS 450 API, letting the normal QDRDBMS Engine and the user application reside in 451 separate processes. The client module would do C<QDRDBMS::Engine::Role> 452 and the server would be an application or server-extending plugin that sits 453 on top of the QDRDBMS API. Or whatever implementers want to do. This is 454 analagous to proxying modules for DBI or other DBMSs. 455 456 =item C<QDRDBMS::Engine::(SQLite|Postgres|Oracle|\w+)> 457 458 A default (but not mandatory) namespace for QDRDBMS Engines to go, that do 459 C<QDRDBMS::Engine::Role(|::\w+)>. A lot of these would likely be 460 implemented over existing DBMSs, which results in QDRDBMS being an 461 alternative API for them. 462 463 =item C<DBIx::Class::Storage::QDRDBMS> etc 464 465 An alternative plug-in storage engine for DBIx::Class that uses QDRDBMS 466 rather than DBI. Analagous extensions can be added to other DBI wrappers 467 modules such as Tangram or Rose::DB or what have you. In either case, said 468 alternatives can either be bundled with the core distros of those other 469 modules, or separately from them, as per their authors' preferences. 470 471 =item C<QDRDBMS::Emulator::(DBI|JDBC|OCI|\w+) 472 473 Emulations of other modules or APIs as wrappers over QDRDBMS. This is 474 potentially the easiest way, short of the other modules themselves being 475 appropriately updated, to permit migration for legacy apps to QDRDBMS while 476 they have the fewest actual code changes. The emulators would likely 477 employ SQL translator utilities internally. 478 479 =item C<QDRDBMSx::\w+> 480 481 Unofficial extensions to QDRDBMS could be named in this space, though it 482 doesn't have to be used if prior coordination happens between developers. 483 484 =back 485 360 486 =head1 PUBLIC SOLUTIONS BUILT OVER QDRDBMS 361 487 362 488 I<This documentation is pending.> -
ext/QDRDBMS/README
19 19 2002-present, incorporating the Rosetta development/release time-period. 20 20 21 21 The QDRDBMS name was intentionally picked to be temporary (it should evoke 22 "QDOS"), as the current release is a prototype. In the future, when 22 "QDOS"), since the current release is a prototype. In the future, when 23 23 QDRDBMS has matured significantly, it is expected that it will be renamed 24 again to a permanent long-term name. 24 again to a permanent long-term name. It is specifically guaranteed that 25 the rename would happen prior to QDRDBMS reaching version 1.0.0, so all 26 versions 1.0.0 and later, plus likely some before, will carry the new name. 25 27 26 28 The long-term name of this project has not yet been decided, though the 27 29 author has a 6-letter candidate in mind, to be revealed later for feedback. … … 33 35 plus associated products, is appreciated. Likewise, the author has a name 34 36 in mind, to be revealed later for feedback. 35 37 38 So you need to keep this in mind if you make any extensions for QDRDBMS, or 39 you use it in your code, or you write any articles or documentation 40 concerning it. Any extensions whose names embed the old name should be 41 updated to embed the new one instead, to preserve consistency. Any 42 documentation or articles that you write now, which mention QDRDBMS, should 43 explicitly state that it is going to be renamed, to help any readers. And 44 of course, any code using QDRDBMS will need to search-n-replace in the new 45 name so that it can remain current. 46 36 47 QDRDBMS has 2 co-developed versions, which are written in native Perl 5 and 37 48 Perl 6 respectively, and which are distributed separately from each other, 38 49 and which will change names at the same time. But while the 2 versions