SQLJ Part 0, now known as SQL/OLB (Object-Language Bindings)

To read the full-text of this research, you can request a copy directly from the authors.


this article is being written, the editor has just submitted his resolution of comments for the U.S. public review that just took place. It is expected that SQL/OLB will be formally approved by the end of 1998. When it is approved, it will be available for purchase from ANSI as ANSI X3.135.10:1998.

No full-text available

Request Full-text Paper PDF

To read the full-text of this research,
you can request a copy directly from the authors.

... How the market will respond to JDO technology is still an open question. 7/3/05 (Eisenberg and Melton, 1998) describe the SQLJ standard and illustrate how it can be used to embed SQL code directly into Java code. SQLJ is a wrapper around JDBC and is similar to other embedded SQL systems. ...
... SQLJ is designed to allow static SQL statements to be inserted directly into Java code. If dynamic SQL is needed, then direct JDBC is preferred (Eisenberg and Melton, 1998). ...
This paper surveys the various technology choices regarding database connectivity using Java. After providing an overview of these technologies, summaries of previous research into efficiency issues of implementations and architectures are discussed. Conclusions regarding the balance between various architecture choices are made.
... Since then a number of query language bindings and embeddings in general purpose programming languages have been proposed and implemented. Examples include SQLJ [13] and more recent LINQ [23] and Ferry [16] middle-ware. Compared with SQL command string interface to database servers, these database binding frameworks certainly increase flexibility and ease of use in accessing databases from programming languages. ...
... The conventional and still widely used approach to database programming is to construct SQL command strings directly and send them to a database server using low-level database server interfaces such as SQL/CLI and JDBC. Embedded SQL such as ECPG of PostgreSQL and SQLJ [13] supports a form of macro SQL statements that are expanded by a preprocessor to those lowlevel database library calls. Both of them are unsatisfactory in many ways; type-checking is far from adequate, and the interaction with the host language construct is rather limited. ...
Conference Paper
Integrating a database query language into a programming language is becoming increasingly important in recently emerging high-level cloud computing and other applications, where efficient and sophisticated data manipulation is required during computation. This paper reports on seamless integration of SQL into SML# - an extension of Standard ML. In the integrated language, the type system always infers a principal type for any type consistent SQL expression. This makes SQL queries first-class citizens, which can be freely combined with any other language constructs definable in Standard ML. For a program involving SQL queries, the compiler separates SQL queries and delegates their evaluation to a database server, e.g. PostgreSQL or MySQL in the currently implemented version. The type system of our language is largely based on Machiavelli, which demonstrates that ML with record polymorphism can represent type structure of SQL. In order to develop a practical language, however, a number of technical challenges have to be overcome, including static enforcement of server connection consistency, proper treatment of overloaded SQL primitives, query compilation, and runtime connection management. This paper describes the necessary extensions to the type system and compilation, and reports on the details of its implementation.
... By the time you read these words, work will be complete on Part 10, SQL/OLB (Object Language Bindings). SQL/OLB corresponds to SQLJ Part 0, about which we wrote in late 1998 (Reference [7]). A version of this specification aligned with SQL-92 was adopted as a new incremental part of the ANSI SQL standard (Reference [8]) in late 1998. ...
... That FDIS ballot should complete in June or July of this year, with the resulting new Part being published as ISO/IEC 9075-10:2000. Reference [7] detailed the technical content of the specification that became the ANSI SQL/OLB standard. The principle technical differences between that document and the ISO OLB:2000 standard derive entirely from new SQL: 1999 capabilities and JDBC2.0 features. ...
The following table provides a summary of the anticipated delivery of these "Next Steps": (Table Presented) Very obviously, SQL standardization is not complete - not by a long shot. While SQL:1999 has loads of features that are already widely implemented (and not a few that now seem unlikely ever to be implemented by more than a single vendor, if that), the marketplace continues to put new and challenging demands on the vendors and their ability to deliver products. The vendors also continue to find new and exciting ways to compete with one another by offering useful new features to deliver to their customers. As the features being demanded, considered, and built prove their usefulness to a broad community, they will continue to be fodder for additional standardization work. Will SQL ever be "finished"? Of course! Every language (even COBOL) eventually comes to an end to its usefulness. SQL will be no different. But there isn't anything on the horizon today - not even XML and its variants (like XML Query) - that solve the same problems that SQL solves and does so as well as SQL. Until the needs change, or the technology available changes dramatically, we believe that SQL will continue to be (as Mike Stonebreaker called it) "Intergalactic Dataspeak". And...the SQL standard will probably continue to grow and be enhanced.
... return toReturn; Figure 2.1: A sample SQL query written using JDBC int rent = 900; #sql iterator Addresses(String address); Addresses a = null; #sql a = {select address into from Apartments where rent < :rent }; Vector<String> toReturn = new Vector<String>(); while ( toReturn.add(a.address()); return toReturn; Figure 2.2: A sample SQL query written using embedded SQL in Java SQL for Java is often known as SQLJ [EM98], and it allows SQL statements to be intermixed directly with Java code. The SQL code can access Java variables for parameters and results can be stored directly into Java data structures without explicit marshaling. ...
In conventional programming languages like Java, the interface for accessing databases is often inelegant. Typically, an entire separate database query language must be embedded inside a conventional programming language for programmers to access the full power and speed of a database. Programmers, though, prefer working entirely from within their conventional programming languages, both for general-purpose computation and for database access. This thesis explores how database operations can be expressed using the existing syntax of conventional programming languages. Programmers are able to write all their code –both general purpose code and database access code– in a single language. To run these database operations efficiently though, algorithms are needed for finding these database operations and optimizing them. This thesis focuses on techniques that can be easily adopted because they do not require changes to existing compilers. Three systems have been developed: Queryll, JReq, and HadoopToSQL. Each system examines the problem from the context of functional-style code, imperative-style code, and MapReduce-style code respectively.
... One solution to these problems is to create hybrid programming languages that mix other languages with Java. For example, SQLJ [1] is a hybrid of Java and SQL. In SQLJ code, SQL queries can be intermixed with Java, and the queries can make reference to Java variables. ...
Conference Paper
When interfacing Java with other systems such as databases, programmers must often program in special interface languages like SQL. Code written in these languages often needs to be embedded in strings where they cannot be error-checked at compile-time, or the Java compiler needs to be altered to directly recognize code written in these languages. We have taken a different approach to adding database query facilities to Java. Bytecode rewriting allows us to add query facilities to Java whose correctness can be checked at compile-time but which don't require any changes to the Java language, Java compilers, Java VMs, or IDEs. Like traditional object-relational mapping tools, we provide Java libraries for accessing individual database entries as objects and navigating among them. To express a query though, a programmer simply writes code that takes a Collection representing the entire contents of a database, iterates over each entry like they would with a normal Collection, and choose the entries of interest. The query is fully valid Java code that, if executed, will read through an entire database and copy entries into Java objects where they will be inspected. Executing queries in this way is obviously inefficient, but we have a special bytecode rewriting tool that can decompile Java class files, identify queries in the bytecode, and rewrite the code to use SQL instead. The rewritten bytecode can then be run using any standard Java VM. Since queries use standard Java set manipulation syntax, Java programmers do not need to learn any new syntax. Our system is able to handle complex queries that make use of all the basic relational operations and exhibits performance comparable to that of hand-written SQL.
Collections of information resources are one of the major directions in the development of digital libraries, which have seen significant progress in recent years. Collections are the most common form in which information resources are organized in such systems. Due to the large potential of existing technologies and the diversity of information resources, the characteristics of collections vary greatly. Nevertheless, there are characteristics common for all collections, and they must be taken into account when developing a collection. In this paper, the methodology issues of collection development are considered. The paper explores the most important common properties of information resource collections; systematization techniques involved in creating collections; problems of the genesis of collections; the role of metadata; peculiarities of scientific collections, as well as promising information technologies and standards meant for the creation, support, and usage of collections.
Conference Paper
The primary mechanism for developing current data-centric and net-centric applications is through software frameworks that extend mainstream languages with runtime libraries. While library-based approaches can be pragmatic and expedient, we assert that programming language extensions are necessary in the long run to obtain application software that is robust, maintainable, and efficient. We discuss, through case studies, how programming language extensions can increase programmer productivity over library-based approaches for data-centric and net-centric applications.
Développer des analyseurs statiques nécessite une manipulation intensive de structures d'arbres et de graphes représentant le programme. La finalité de cette thèse est de proposer des constructions de langage dédiées au prototypage d'outils d'analyse et de transformation de programmes et inspirées de la réécriture de termes et de termes-graphes. L'originalité de notre approche est d'embarquer ces nouvelles constructions dans les langages généralistes sous la forme d'un langage dédié embarqué. Les travaux de cette thèse se fondent sur le langage Tom qui propose d'embarquer des constructions de réécriture dans des langages généralistes comme Java. La première contribution de cette thèse a été de formaliser les langages embarqués sous le concept de langage îlot. Ce formalisme a ainsi permis de certifier la compilation du langage Tom. Nos travaux sur l'analyse de Bytecode nous ont ensuite conduit à réfléchir à la représentation et la manipulation de graphes de flot de programmes et nous avons alors proposé des constructions de langage inspirées de la réécriture de termes-graphes. Une autre contribution de cette thèse est la conception d'un langage de stratégies adapté à l'expression de propriétés sur un programme. Associé au filtrage, ce langage permet d'exprimer de manière déclarative des analyses et des transformations sur des arbres ou des graphes. Enfin, l'ensemble des propositions de cette thèse a été intégré au langage Tom sous la forme de nouvelles constructions syntaxiques ou d'améliorations de constructions existantes et a ainsi pu être appliqué à l'analyse du langage Java.
ResearchGate has not been able to resolve any references for this publication.