summaryrefslogtreecommitdiff
path: root/connectivity/source/parse
diff options
context:
space:
mode:
authorJens-Heiner Rechtien <hr@openoffice.org>2003-03-19 15:38:50 +0000
committerJens-Heiner Rechtien <hr@openoffice.org>2003-03-19 15:38:50 +0000
commit53128e64b7552217c8cf290e73ef7a69c375a37c (patch)
treeaff2389b82d86c4bc405f32d413f7d93b3785246 /connectivity/source/parse
parenta0b65deaa6e999132779e26f2b448dfa8662963c (diff)
MWS_SRX644: migrate branch mws_srx644 -> HEAD
Diffstat (limited to 'connectivity/source/parse')
-rw-r--r--connectivity/source/parse/makefile.mk4
-rw-r--r--connectivity/source/parse/sqlbison.y272
-rw-r--r--connectivity/source/parse/sqlflex.l140
-rw-r--r--connectivity/source/parse/sqlnode.cxx9
4 files changed, 66 insertions, 359 deletions
diff --git a/connectivity/source/parse/makefile.mk b/connectivity/source/parse/makefile.mk
index 9b3cee6ed84b..8afaaebee275 100644
--- a/connectivity/source/parse/makefile.mk
+++ b/connectivity/source/parse/makefile.mk
@@ -2,9 +2,9 @@
#
# $RCSfile: makefile.mk,v $
#
-# $Revision: 1.11 $
+# $Revision: 1.12 $
#
-# last change: $Author: vg $ $Date: 2002-08-27 13:12:02 $
+# last change: $Author: hr $ $Date: 2003-03-19 16:38:46 $
#
# The Contents of this file are made available subject to the terms of
# either of the following licenses
diff --git a/connectivity/source/parse/sqlbison.y b/connectivity/source/parse/sqlbison.y
index a0f724d32da0..591e3c10a547 100644
--- a/connectivity/source/parse/sqlbison.y
+++ b/connectivity/source/parse/sqlbison.y
@@ -1,7 +1,7 @@
%{
//--------------------------------------------------------------------------
//
-// $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/connectivity/source/parse/sqlbison.y,v 1.42 2002-11-27 17:14:33 obo Exp $
+// $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/connectivity/source/parse/sqlbison.y,v 1.43 2003-03-19 16:38:46 hr Exp $
//
// Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
//
@@ -9,14 +9,13 @@
// OJ
//
// Last change:
-// $Author: obo $ $Date: 2002-11-27 17:14:33 $ $Revision: 1.42 $
+// $Author: hr $ $Date: 2003-03-19 16:38:46 $ $Revision: 1.43 $
//
// Description:
//
//
//--------------------------------------------------------------------------
-#include <string.h>
#ifndef _VECTOR_
#include <vector>
#endif
@@ -79,34 +78,6 @@
#include "connectivity/dbconversion.hxx"
#endif
-#ifdef WNT
-#include "stdarg.h"
-namespace std {
-int fprintf(FILE* stream, const char* format, ...)
-{
- va_list va_param;
-
- va_start(va_param, format);
- int res = ::vfprintf(stream, format, va_param);
- va_end(va_param);
-
- return res;
-}
-
-#if _MSC_VER < 1300
-void* malloc( size_t size )
-{
- return ::malloc(size);
-}
-
-void free( void *memblock )
-{
- ::free(memblock);
-}
-#endif
-};
-#endif
-
static ::rtl::OUString aEmptyString;
static connectivity::OSQLInternalNode* newNode(const sal_Char* pNewValue,
@@ -163,20 +134,6 @@ using namespace connectivity;
%token <pParseNode> SQL_TOKEN_STRING SQL_TOKEN_ACCESS_DATE SQL_TOKEN_INT SQL_TOKEN_REAL_NUM
%token <pParseNode> SQL_TOKEN_INTNUM SQL_TOKEN_APPROXNUM SQL_TOKEN_NOT SQL_TOKEN_NAME
- /* operators */
-%left <pParseNode> SQL_TOKEN_NAME
-%left <pParseNode> SQL_TOKEN_OR
-%left <pParseNode> SQL_TOKEN_AND
-
-%left <pParseNode> LESSEQ GREATEQ NOTEQUAL LESS GREAT EQUAL /* '<' '>' = <> < > <= >= != */
-%left <pParseNode> '+' '-'
-%left <pParseNode> '*' '/'
-%left <pParseNode> SQL_TOKEN_NATURAL SQL_TOKEN_CROSS SQL_TOKEN_FULL SQL_TOKEN_LEFT SQL_TOKEN_RIGHT
-%left <pParseNode> ')'
-%right <pParseNode> '='
-%right <pParseNode> '.'
-%right <pParseNode> '('
-
%nonassoc <pParseNode> SQL_TOKEN_UMINUS
@@ -186,31 +143,31 @@ using namespace connectivity;
%token <pParseNode> SQL_TOKEN_ALL SQL_TOKEN_ALTER SQL_TOKEN_AMMSC SQL_TOKEN_ANY SQL_TOKEN_AS SQL_TOKEN_ASC SQL_TOKEN_AT SQL_TOKEN_AUTHORIZATION SQL_TOKEN_AVG
-%token <pParseNode> SQL_TOKEN_BETWEEN SQL_TOKEN_BIT SQL_TOKEN_BIT_LENGTH SQL_TOKEN_BOTH SQL_TOKEN_BY
+%token <pParseNode> SQL_TOKEN_BETWEEN SQL_TOKEN_BIT SQL_TOKEN_BOTH SQL_TOKEN_BY
-%token <pParseNode> SQL_TOKEN_CAST SQL_TOKEN_CHARACTER SQL_TOKEN_CHAR_LENGTH SQL_TOKEN_CHECK SQL_TOKEN_COLLATE SQL_TOKEN_COMMIT SQL_TOKEN_CONTINUE SQL_TOKEN_CONVERT SQL_TOKEN_COUNT SQL_TOKEN_CREATE SQL_TOKEN_CROSS
-%token <pParseNode> SQL_TOKEN_CURRENT SQL_TOKEN_CURRENT_DATE SQL_TOKEN_CURRENT_TIME SQL_TOKEN_CURRENT_TIMESTAMP SQL_TOKEN_CURSOR
+%token <pParseNode> SQL_TOKEN_CAST SQL_TOKEN_CHARACTER SQL_TOKEN_CHECK SQL_TOKEN_COLLATE SQL_TOKEN_COMMIT SQL_TOKEN_CONTINUE SQL_TOKEN_CONVERT SQL_TOKEN_COUNT SQL_TOKEN_CREATE SQL_TOKEN_CROSS
+%token <pParseNode> SQL_TOKEN_CURRENT SQL_TOKEN_CURSOR
%token <pParseNode> SQL_TOKEN_DATE SQL_TOKEN_DAY SQL_TOKEN_DEC SQL_TOKEN_DECIMAL SQL_TOKEN_DECLARE SQL_TOKEN_DEFAULT SQL_TOKEN_DELETE SQL_TOKEN_DESC
%token <pParseNode> SQL_TOKEN_DISTINCT SQL_TOKEN_DOUBLE SQL_TOKEN_DROP
-%token <pParseNode> SQL_TOKEN_ESCAPE SQL_TOKEN_EXCEPT SQL_TOKEN_EXISTS SQL_TOKEN_EXTRACT SQL_TOKEN_FALSE SQL_TOKEN_FETCH SQL_TOKEN_FLOAT SQL_TOKEN_FOR SQL_TOKEN_FOREIGN SQL_TOKEN_FOUND SQL_TOKEN_FROM SQL_TOKEN_FULL
+%token <pParseNode> SQL_TOKEN_ESCAPE SQL_TOKEN_EXCEPT SQL_TOKEN_EXISTS SQL_TOKEN_FALSE SQL_TOKEN_FETCH SQL_TOKEN_FLOAT SQL_TOKEN_FOR SQL_TOKEN_FOREIGN SQL_TOKEN_FOUND SQL_TOKEN_FROM SQL_TOKEN_FULL
-%token <pParseNode> SQL_TOKEN_GRANT SQL_TOKEN_GROUP SQL_TOKEN_HAVING SQL_TOKEN_HOUR SQL_TOKEN_IN SQL_TOKEN_INDICATOR SQL_TOKEN_INNER SQL_TOKEN_INSERT SQL_TOKEN_INTEGER SQL_TOKEN_INTO SQL_TOKEN_IS SQL_TOKEN_INTERSECT
+%token <pParseNode> SQL_TOKEN_GRANT SQL_TOKEN_GROUP SQL_TOKEN_HAVING SQL_TOKEN_IN SQL_TOKEN_INDICATOR SQL_TOKEN_INNER SQL_TOKEN_INTEGER SQL_TOKEN_INTO SQL_TOKEN_IS SQL_TOKEN_INTERSECT
-%token <pParseNode> SQL_TOKEN_JOIN SQL_TOKEN_KEY SQL_TOKEN_LEADING SQL_TOKEN_LEFT SQL_TOKEN_LIKE SQL_TOKEN_LOCAL SQL_TOKEN_LOWER SQL_TOKEN_MINUTE SQL_TOKEN_MONTH
+%token <pParseNode> SQL_TOKEN_JOIN SQL_TOKEN_KEY SQL_TOKEN_LEADING SQL_TOKEN_LIKE SQL_TOKEN_LOCAL SQL_TOKEN_LOWER
%token <pParseNode> SQL_TOKEN_MAX SQL_TOKEN_MIN SQL_TOKEN_NATURAL SQL_TOKEN_NCHAR SQL_TOKEN_NULL SQL_TOKEN_NUMERIC
%token <pParseNode> SQL_TOKEN_OCTECT_LENGTH SQL_TOKEN_OF SQL_TOKEN_ON SQL_TOKEN_OPTION SQL_TOKEN_ORDER SQL_TOKEN_OUTER
-%token <pParseNode> SQL_TOKEN_POSITION SQL_TOKEN_PRECISION SQL_TOKEN_PRIMARY SQL_TOKEN_PRIVILEGES SQL_TOKEN_PROCEDURE SQL_TOKEN_PUBLIC
-%token <pParseNode> SQL_TOKEN_REAL SQL_TOKEN_REFERENCES SQL_TOKEN_ROLLBACK SQL_TOKEN_RIGHT
+%token <pParseNode> SQL_TOKEN_PRECISION SQL_TOKEN_PRIMARY SQL_TOKEN_PRIVILEGES SQL_TOKEN_PROCEDURE SQL_TOKEN_PUBLIC
+%token <pParseNode> SQL_TOKEN_REAL SQL_TOKEN_REFERENCES SQL_TOKEN_ROLLBACK
-%token <pParseNode> SQL_TOKEN_SCHEMA SQL_TOKEN_SECOND SQL_TOKEN_SELECT SQL_TOKEN_SET SQL_TOKEN_SIZE SQL_TOKEN_SMALLINT SQL_TOKEN_SOME SQL_TOKEN_SQLCODE SQL_TOKEN_SQLERROR SQL_TOKEN_SUBSTRING SQL_TOKEN_SUM
+%token <pParseNode> SQL_TOKEN_SCHEMA SQL_TOKEN_SELECT SQL_TOKEN_SET SQL_TOKEN_SIZE SQL_TOKEN_SMALLINT SQL_TOKEN_SOME SQL_TOKEN_SQLCODE SQL_TOKEN_SQLERROR SQL_TOKEN_SUM
%token <pParseNode> SQL_TOKEN_TABLE SQL_TOKEN_TIME SQL_TOKEN_TIMESTAMP SQL_TOKEN_TIMEZONE_HOUR SQL_TOKEN_TIMEZONE_MINUTE SQL_TOKEN_TO SQL_TOKEN_TRAILING SQL_TOKEN_TRANSLATE SQL_TOKEN_TRIM SQL_TOKEN_TRUE SQL_TOKEN_UNION
%token <pParseNode> SQL_TOKEN_UNIQUE SQL_TOKEN_UNKNOWN SQL_TOKEN_UPDATE SQL_TOKEN_UPPER SQL_TOKEN_USAGE SQL_TOKEN_USER SQL_TOKEN_USING SQL_TOKEN_VALUES SQL_TOKEN_VIEW
-%token <pParseNode> SQL_TOKEN_WHERE SQL_TOKEN_WITH SQL_TOKEN_WORK SQL_TOKEN_YEAR SQL_TOKEN_ZONE
+%token <pParseNode> SQL_TOKEN_WHERE SQL_TOKEN_WITH SQL_TOKEN_WORK SQL_TOKEN_ZONE
/* ODBC KEYWORDS */
%token <pParseNode> SQL_TOKEN_CALL SQL_TOKEN_D SQL_TOKEN_FN SQL_TOKEN_T SQL_TOKEN_TS SQL_TOKEN_OJ
@@ -233,6 +190,22 @@ using namespace connectivity;
%token <pParseNode> SQL_TOKEN_LOG10 SQL_TOKEN_MOD SQL_TOKEN_PI SQL_TOKEN_POWER SQL_TOKEN_RADIANS SQL_TOKEN_RAND
%token <pParseNode> SQL_TOKEN_ROUND SQL_TOKEN_SIGN SQL_TOKEN_SIN SQL_TOKEN_SQRT SQL_TOKEN_TAN SQL_TOKEN_TRUNCATE
+
+ /* operators */
+%left SQL_TOKEN_NAME
+%left <pParseNode> SQL_TOKEN_OR
+%left <pParseNode> SQL_TOKEN_AND
+
+%left <pParseNode> LESSEQ GREATEQ NOTEQUAL LESS GREAT EQUAL /* '<' '>' = <> < > <= >= != */
+%left <pParseNode> '+' '-'
+%left <pParseNode> '*' '/'
+%left SQL_TOKEN_NATURAL SQL_TOKEN_CROSS SQL_TOKEN_FULL SQL_TOKEN_LEFT SQL_TOKEN_RIGHT
+%left ')'
+%right '='
+%right '.'
+%right '('
+
+
%token <pParseNode> SQL_TOKEN_INVALIDSYMBOL
/*%type <pParseNode> sql_single_statement */
@@ -1055,10 +1028,7 @@ boolean_primary:
$$->append($3 = newNode(")", SQL_NODE_PUNCTUATION));
}
;
-subroutine:
- {
- }
- ;
+
boolean_test:
boolean_primary
| boolean_primary SQL_TOKEN_IS truth_value
@@ -1076,7 +1046,7 @@ boolean_test:
$$->append($3);
$$->append($4);
}
- | subroutine SQL_TOKEN_NOT SQL_TOKEN_LIKE string_value_exp opt_escape
+/* | sql_not SQL_TOKEN_LIKE string_value_exp opt_escape
{
if (xxx_pGLOBAL_SQLPARSER->inPredicateCheck())
{
@@ -1085,10 +1055,10 @@ boolean_test:
$$ = SQL_NEW_RULE;
$$->append(pColumnRef);
+ $$->append($1);
$$->append($2);
- $$->append($3);
- if (xxx_pGLOBAL_SQLPARSER->buildLikeRule($$,$4,$5))
- $$->append($5);
+ if (xxx_pGLOBAL_SQLPARSER->buildLikeRule($$,$3,$4))
+ $$->append($4);
else
{
delete $$;
@@ -1097,15 +1067,18 @@ boolean_test:
}
else
YYERROR;
- }
+ }
+*/
;
boolean_factor:
boolean_test
- | SQL_TOKEN_NOT boolean_test
+ | SQL_TOKEN_NOT '(' boolean_test ')'
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2);
+ $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append($3);
+ $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
}
;
boolean_term:
@@ -1224,15 +1197,7 @@ comparison:
| GREATEQ
;
between_predicate:
- row_value_constructor SQL_TOKEN_BETWEEN row_value_constructor SQL_TOKEN_AND row_value_constructor
- {$$ = SQL_NEW_RULE;
- $$->append($1);
- $$->append($2);
- $$->append($3);
- $$->append($4);
- $$->append($5);
- }
- | row_value_constructor SQL_TOKEN_NOT SQL_TOKEN_BETWEEN row_value_constructor SQL_TOKEN_AND row_value_constructor
+ row_value_constructor sql_not SQL_TOKEN_BETWEEN row_value_constructor SQL_TOKEN_AND row_value_constructor
{$$ = SQL_NEW_RULE;
$$->append($1);
$$->append($2);
@@ -1241,25 +1206,7 @@ between_predicate:
$$->append($5);
$$->append($6);
}
- | subroutine SQL_TOKEN_NOT SQL_TOKEN_BETWEEN row_value_constructor SQL_TOKEN_AND row_value_constructor
- {
- if (xxx_pGLOBAL_SQLPARSER->inPredicateCheck())
- {
- OSQLParseNode* pColumnRef = newNode(aEmptyString, SQL_NODE_RULE,OSQLParser::RuleID(OSQLParseNode::column_ref));
- pColumnRef->append(newNode(xxx_pGLOBAL_SQLPARSER->getFieldName(),SQL_NODE_NAME));
-
- $$ = SQL_NEW_RULE;
- $$->append(pColumnRef);
- $$->append($2);
- $$->append($3);
- $$->append($4);
- $$->append($5);
- $$->append($6);
- }
- else
- YYERROR;
- }
- | subroutine SQL_TOKEN_BETWEEN row_value_constructor SQL_TOKEN_AND row_value_constructor
+ | sql_not SQL_TOKEN_BETWEEN row_value_constructor SQL_TOKEN_AND row_value_constructor
{
if (xxx_pGLOBAL_SQLPARSER->inPredicateCheck())
{
@@ -1268,6 +1215,7 @@ between_predicate:
$$ = SQL_NEW_RULE;
$$->append(pColumnRef);
+ $$->append($1);
$$->append($2);
$$->append($3);
$$->append($4);
@@ -1313,33 +1261,7 @@ like_predicate:
$$->append($3);
$$->append($4);
}
- /*| SQL_TOKEN_NOT
- {
- if(!xxx_pGLOBAL_SQLPARSER->inPredicateCheck())
- YYERROR;
- } SQL_TOKEN_LIKE string_value_exp opt_escape
- {
- if (xxx_pGLOBAL_SQLPARSER->inPredicateCheck())
- {
- OSQLParseNode* pColumnRef = newNode(aEmptyString, SQL_NODE_RULE,OSQLParser::RuleID(OSQLParseNode::column_ref));
- pColumnRef->append(newNode(xxx_pGLOBAL_SQLPARSER->getFieldName(),SQL_NODE_NAME));
-
- $$ = SQL_NEW_RULE;
- $$->append(pColumnRef);
- $$->append($1);
- $$->append($3);
- if (xxx_pGLOBAL_SQLPARSER->buildLikeRule($$,$4,$5))
- $$->append($5);
- else
- {
- delete $$;
- YYABORT;
- }
- }
- else
- YYERROR;
- }
- */| SQL_TOKEN_LIKE string_value_exp opt_escape
+ | sql_not SQL_TOKEN_LIKE string_value_exp opt_escape
{
if (xxx_pGLOBAL_SQLPARSER->inPredicateCheck())
{
@@ -1348,9 +1270,10 @@ like_predicate:
$$ = SQL_NEW_RULE;
$$->append(pColumnRef);
- $$->append($1);
- if (xxx_pGLOBAL_SQLPARSER->buildLikeRule($$,$2,$3))
- $$->append($3);
+ $$->append($1);
+ $$->append($2);
+ if (xxx_pGLOBAL_SQLPARSER->buildLikeRule($$,$3,$4))
+ $$->append($4);
else
{
delete $$;
@@ -1360,7 +1283,7 @@ like_predicate:
else
YYERROR;
}
- | SQL_TOKEN_LIKE value_exp_primary opt_escape
+ | sql_not SQL_TOKEN_LIKE value_exp_primary opt_escape
{
if (xxx_pGLOBAL_SQLPARSER->inPredicateCheck())
{
@@ -1370,30 +1293,9 @@ like_predicate:
$$ = SQL_NEW_RULE;
$$->append(pColumnRef);
$$->append($1);
- if (xxx_pGLOBAL_SQLPARSER->buildLikeRule($$,$2,$3))
- $$->append($3);
- else
- {
- delete $$;
- YYABORT;
- }
- }
- else
- YYERROR;
- }
- | subroutine SQL_TOKEN_NOT SQL_TOKEN_LIKE value_exp_primary opt_escape
- {
- if (xxx_pGLOBAL_SQLPARSER->inPredicateCheck())
- {
- OSQLParseNode* pColumnRef = newNode(aEmptyString, SQL_NODE_RULE,OSQLParser::RuleID(OSQLParseNode::column_ref));
- pColumnRef->append(newNode(xxx_pGLOBAL_SQLPARSER->getFieldName(),SQL_NODE_NAME));
-
- $$ = SQL_NEW_RULE;
- $$->append(pColumnRef);
$$->append($2);
- $$->append($3);
- if (xxx_pGLOBAL_SQLPARSER->buildLikeRule($$,$4,$5))
- $$->append($5);
+ if (xxx_pGLOBAL_SQLPARSER->buildLikeRule($$,$3,$4))
+ $$->append($4);
else
{
delete $$;
@@ -1468,18 +1370,18 @@ in_predicate:
$$->append($3);
$$->append($4);
}
- | subroutine SQL_TOKEN_IN in_predicate_value
+ | sql_not SQL_TOKEN_IN in_predicate_value
{
- if (xxx_pGLOBAL_SQLPARSER->inPredicateCheck())
+ if ( xxx_pGLOBAL_SQLPARSER->inPredicateCheck() )
{
OSQLParseNode* pColumnRef = newNode(aEmptyString, SQL_NODE_RULE,OSQLParser::RuleID(OSQLParseNode::column_ref));
pColumnRef->append(newNode(xxx_pGLOBAL_SQLPARSER->getFieldName(),SQL_NODE_NAME));
$$ = SQL_NEW_RULE;
$$->append(pColumnRef);
+ $$->append($1);
$$->append($2);
$$->append($3);
- /*$$->append($3);*/
}
else
YYERROR;
@@ -2523,7 +2425,7 @@ value_exp_commalist:
value_exp
{$$ = SQL_NEW_COMMALISTRULE;
$$->append($1);}
- | value_exp_commalist ',' value_exp
+ | value_exp_commalist ',' value_exp
{$1->append($3);
$$ = $1;}
/* this rule is only valid if we check predicates */
@@ -3057,7 +2959,7 @@ sql:
}
else
YYERROR;
- }
+ };
%%
@@ -3105,7 +3007,6 @@ IMPLEMENT_CONSTASCII_STRING(KEY_STR_LIKE, "LIKE");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_NOT, "NOT");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_NULL, "NULL");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_TRUE, "True");
-
IMPLEMENT_CONSTASCII_STRING(KEY_STR_FALSE, "False");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_IS, "IS");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_BETWEEN, "BETWEEN");
@@ -3193,7 +3094,6 @@ IParseContext::InternationalKeyCode OParseContext::getIntlKeyCode(const ::rtl::O
sal_uInt32 nCount = sizeof Intl_TokenID / sizeof Intl_TokenID[0];
for (sal_uInt32 i = 0; i < nCount; i++)
{
-
::rtl::OString aKey = getIntlKeywordAscii(Intl_TokenID[i]);
if (rToken.equalsIgnoreAsciiCase(aKey))
return Intl_TokenID[i];
@@ -3203,63 +3103,34 @@ IParseContext::InternationalKeyCode OParseContext::getIntlKeyCode(const ::rtl::O
}
//------------------------------------------------------------------------------
-
static Locale& impl_getLocaleInstance( )
-
{
-
static Locale s_aLocale(
-
::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "en" ) ),
-
::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "US" ) ),
-
::rtl::OUString( )
-
);
-
return s_aLocale;
-
}
-
-
//------------------------------------------------------------------------------
-
void OParseContext::setDefaultLocale( const ::com::sun::star::lang::Locale& _rLocale )
-
{
-
impl_getLocaleInstance() = _rLocale;
-
}
-
-
//------------------------------------------------------------------------------
-
Locale OParseContext::getPreferredLocale( ) const
-
{
-
return getDefaultLocale();
-
}
-
-
//------------------------------------------------------------------------------
-
const Locale& OParseContext::getDefaultLocale()
-
{
-
return impl_getLocaleInstance();
-
}
-
-
//==========================================================================
//= misc
//==========================================================================
@@ -3414,46 +3285,26 @@ OSQLParseNode* OSQLParser::parseTree(::rtl::OUString& rErrorMessage,
{
::rtl::OString aStr;
if (pContext)
-
{
-
IParseContext::InternationalKeyCode eKeyCode = IParseContext::KEY_NONE;
-
switch( nTokenID )
-
{
-
case SQL_TOKEN_LIKE: eKeyCode = IParseContext::KEY_LIKE; break;
-
case SQL_TOKEN_NOT: eKeyCode = IParseContext::KEY_NOT; break;
-
case SQL_TOKEN_NULL: eKeyCode = IParseContext::KEY_NULL; break;
-
case SQL_TOKEN_TRUE: eKeyCode = IParseContext::KEY_TRUE; break;
-
case SQL_TOKEN_FALSE: eKeyCode = IParseContext::KEY_FALSE; break;
-
case SQL_TOKEN_IS: eKeyCode = IParseContext::KEY_IS; break;
-
case SQL_TOKEN_BETWEEN: eKeyCode = IParseContext::KEY_BETWEEN; break;
-
case SQL_TOKEN_OR: eKeyCode = IParseContext::KEY_OR; break;
-
case SQL_TOKEN_AND: eKeyCode = IParseContext::KEY_AND; break;
-
case SQL_TOKEN_AVG: eKeyCode = IParseContext::KEY_AVG; break;
-
case SQL_TOKEN_COUNT: eKeyCode = IParseContext::KEY_COUNT; break;
-
case SQL_TOKEN_MAX: eKeyCode = IParseContext::KEY_MAX; break;
-
case SQL_TOKEN_MIN: eKeyCode = IParseContext::KEY_MIN; break;
-
case SQL_TOKEN_SUM: eKeyCode = IParseContext::KEY_SUM; break;
-
}
aStr = pContext->getIntlKeywordAscii(eKeyCode);
-
}
if (!aStr.getLength())
@@ -3852,16 +3703,5 @@ int OSQLParser::SQLlex()
{
return s_pScanner->SQLlex();
}
-/*------------------------------------------------------------------------
-
- $Log: not supported by cvs2svn $
-
- Revision 1.34.8.1.2.1 2002/05/10 07:53:46 oj
- #98357# enable = TRUE
-
- Revision 1.1 2000/07/25 10:39:29 oj
- new revision
-
- Revision 1.0 21.07.2000 12:27:34 oj
-------------------------------------------------------------------------*/
+
diff --git a/connectivity/source/parse/sqlflex.l b/connectivity/source/parse/sqlflex.l
index fbb776bdbe60..175bbb7bc51e 100644
--- a/connectivity/source/parse/sqlflex.l
+++ b/connectivity/source/parse/sqlflex.l
@@ -2,7 +2,7 @@
//--------------------------------------------------------------------------
//
-// $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/connectivity/source/parse/sqlflex.l,v 1.17 2002-09-27 11:10:30 oj Exp $
+// $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/connectivity/source/parse/sqlflex.l,v 1.18 2003-03-19 16:38:46 hr Exp $
//
// Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
//
@@ -10,7 +10,7 @@
// OJ
//
// Last change:
-// $Author: oj $ $Date: 2002-09-27 11:10:30 $ $Revision: 1.17 $
+// $Author: hr $ $Date: 2003-03-19 16:38:46 $ $Revision: 1.18 $
//
// Description:
//
@@ -113,7 +113,6 @@ OSQLScanner* xxx_pGLOBAL_SQLSCAN = NULL;
[Aa][Nn][Yy] {SQL_NEW_KEYWORD(SQL_TOKEN_ANY); return SQL_TOKEN_ANY; }
[Aa][Ss] {SQL_NEW_KEYWORD(SQL_TOKEN_AS); return SQL_TOKEN_AS; }
[Aa][Ss][Cc] {SQL_NEW_KEYWORD(SQL_TOKEN_ASC); return SQL_TOKEN_ASC; }
-
[Aa][Ss][Cc][Ii][Ii] {SQL_NEW_KEYWORD(SQL_TOKEN_ASC); return SQL_TOKEN_ASCII; }
[Aa][Tt] {SQL_NEW_KEYWORD(SQL_TOKEN_AT); return SQL_TOKEN_AT; }
[Aa][Uu][Tt][Hh][Oo][Rr][Ii][Zz][Aa][Tt][Ii][Oo][Nn] {SQL_NEW_KEYWORD(SQL_TOKEN_AUTHORIZATION); return SQL_TOKEN_AUTHORIZATION; }
@@ -353,11 +352,8 @@ sal_Int32 gatherString( sal_Int32 delim, sal_Int32 nTyp)
sal_Int32 ch;
static sal_Int32 BUFFERSIZE = 256;
static sal_Char* Buffer = 0;
-
if(!Buffer)
-
Buffer = new sal_Char[BUFFERSIZE];
-
sal_Char *s = Buffer;
sal_Int32 nPos = 0;
@@ -377,23 +373,17 @@ sal_Int32 gatherString( sal_Int32 delim, sal_Int32 nTyp)
{
case 0:
SQL_NEW_NODE(::rtl::OUString(Buffer,nPos,RTL_TEXTENCODING_UTF8), SQL_NODE_NAME);
-
delete Buffer;
-
Buffer = NULL;
return SQL_TOKEN_NAME;
case 1:
SQL_NEW_NODE(::rtl::OUString(Buffer,nPos,RTL_TEXTENCODING_UTF8), SQL_NODE_STRING);
-
delete Buffer;
-
Buffer = NULL;
return SQL_TOKEN_STRING;
case 2:
SQL_NEW_NODE(::rtl::OUString(Buffer,nPos,RTL_TEXTENCODING_UTF8), SQL_NODE_ACCESS_DATE);
-
delete Buffer;
-
Buffer = NULL;
return SQL_TOKEN_ACCESS_DATE;
}
@@ -433,56 +423,32 @@ sal_Int32 gatherString( sal_Int32 delim, sal_Int32 nTyp)
}
*s = '\0';
YY_FATAL_ERROR("Unterminated name string");
-
delete Buffer;
-
Buffer = NULL;
return SQL_TOKEN_INVALIDSYMBOL;
}
-
-
sal_Int32 mapEnumToToken(IParseContext::InternationalKeyCode _eKeyCode )
-
{
-
sal_Int32 nTokenID = 0;
-
switch( _eKeyCode )
-
{
-
case IParseContext::KEY_LIKE: nTokenID = SQL_TOKEN_LIKE; break;
-
case IParseContext::KEY_NOT: nTokenID = SQL_TOKEN_NOT; break;
-
case IParseContext::KEY_NULL: nTokenID = SQL_TOKEN_NULL; break;
-
case IParseContext::KEY_TRUE: nTokenID = SQL_TOKEN_TRUE; break;
-
case IParseContext::KEY_FALSE: nTokenID = SQL_TOKEN_FALSE; break;
-
case IParseContext::KEY_IS: nTokenID = SQL_TOKEN_IS; break;
-
case IParseContext::KEY_BETWEEN: nTokenID = SQL_TOKEN_BETWEEN; break;
-
case IParseContext::KEY_OR: nTokenID = SQL_TOKEN_OR; break;
-
case IParseContext::KEY_AND: nTokenID = SQL_TOKEN_AND; break;
-
case IParseContext::KEY_AVG: nTokenID = SQL_TOKEN_AVG; break;
-
case IParseContext::KEY_COUNT: nTokenID = SQL_TOKEN_COUNT; break;
-
case IParseContext::KEY_MAX: nTokenID = SQL_TOKEN_MAX; break;
-
case IParseContext::KEY_MIN: nTokenID = SQL_TOKEN_MIN; break;
-
case IParseContext::KEY_SUM: nTokenID = SQL_TOKEN_SUM; break;
-
}
return nTokenID;
-
}
/*
* Read SQL Name literal
@@ -492,9 +458,7 @@ sal_Int32 mapEnumToToken(IParseContext::InternationalKeyCode _eKeyCode )
sal_Int32 gatherName(const sal_Char* text)
{
sal_Int32 nToken;
-
OSL_ENSURE(xxx_pGLOBAL_SQLSCAN,"You forgot to set the scanner!");
-
IParseContext::InternationalKeyCode eKeyCode = xxx_pGLOBAL_SQLSCAN->getInternationalTokenID(text);
switch (eKeyCode)
{
@@ -512,7 +476,6 @@ sal_Int32 gatherName(const sal_Char* text)
case IParseContext::KEY_MAX:
case IParseContext::KEY_MIN:
case IParseContext::KEY_SUM:
-
nToken = mapEnumToToken(eKeyCode);
SQL_NEW_KEYWORD(nToken);
return nToken;
@@ -528,81 +491,46 @@ sal_Int32 gatherName(const sal_Char* text)
*/
sal_Int32 gatherNamePre(const sal_Char* text)
{
-
sal_Int32 nToken;
OSL_ENSURE(xxx_pGLOBAL_SQLSCAN,"You forgot to set the scanner!");
IParseContext::InternationalKeyCode eKeyCode = xxx_pGLOBAL_SQLSCAN->getInternationalTokenID(text);
switch (eKeyCode)
{
case IParseContext::KEY_LIKE:
-
case IParseContext::KEY_NOT:
-
case IParseContext::KEY_NULL:
-
case IParseContext::KEY_TRUE:
-
case IParseContext::KEY_FALSE:
-
case IParseContext::KEY_IS:
-
case IParseContext::KEY_BETWEEN:
-
case IParseContext::KEY_OR:
-
case IParseContext::KEY_AND:
-
case IParseContext::KEY_COUNT:
-
case IParseContext::KEY_AVG:
-
case IParseContext::KEY_MAX:
-
case IParseContext::KEY_MIN:
-
case IParseContext::KEY_SUM:
-
nToken = mapEnumToToken(eKeyCode);
SQL_NEW_KEYWORD(nToken);
-
break;
-
default:
-
// we need a special handling for parameter
-
{
-
::rtl::OString sStmt = xxx_pGLOBAL_SQLSCAN->getStatement();
-
sal_Int32 nLength = strlen(text);
-
sal_Int32 nPos = sStmt.getLength() - nLength - 1;
-
if (sStmt.getStr()[nPos] == ':')
-
{
-
SQL_NEW_NODE(::rtl::OUString(text,nLength,RTL_TEXTENCODING_UTF8), SQL_NODE_NAME);
-
nToken = SQL_TOKEN_NAME;
-
}
-
else
-
{
-
SQL_NEW_NODE(::rtl::OUString(text,nLength,RTL_TEXTENCODING_UTF8), SQL_NODE_STRING);
-
nToken = SQL_TOKEN_STRING;
-
}
-
}
-
}
-
return nToken;
}
@@ -623,7 +551,6 @@ OSQLScanner::OSQLScanner()
, m_pContext(NULL)
, m_nRule(0) // 0 is INITIAL
{
-
IN_SQLyyerror = false;
}
@@ -635,115 +562,65 @@ OSQLScanner::~OSQLScanner()
void OSQLScanner::SQLyyerror(sal_Char *fmt)
{
-
-
if(IN_SQLyyerror)
-
return;
-
IN_SQLyyerror = true;
-
OSL_ENSURE(m_pContext, "OSQLScanner::SQLyyerror: No Context set");
m_sErrorMessage = ::rtl::OUString(fmt,strlen(fmt),RTL_TEXTENCODING_UTF8);
if (m_nCurrentPos < m_sStatement.getLength())
{
m_sErrorMessage += ::rtl::OUString::createFromAscii(": ");
-
::rtl::OUString aError;
-
static sal_Int32 BUFFERSIZE = 256;
-
static sal_Char* Buffer = 0;
-
if(!Buffer)
-
Buffer = new sal_Char[BUFFERSIZE];
-
-
sal_Char *s = Buffer;
-
sal_Int32 nPos = 1;
-
sal_Int32 ch = SQLyytext ? (SQLyytext[0] == 0 ? ' ' : SQLyytext[0]): ' ';
-
*s++ = ch;
-
while ((ch = yyinput()) != EOF)
-
{
-
if (ch == ' ')
-
{
-
if ((ch = yyinput()) != ' ')
-
{
-
if (ch != EOF)
-
unput(ch);
-
}
-
*s = '\0';
-
aError = ::rtl::OUString(Buffer,nPos,RTL_TEXTENCODING_UTF8);
-
break;
-
}
-
else
-
{
-
*s++ = ch;
-
if (++nPos == BUFFERSIZE)
-
{
-
::rtl::OString aBuf(Buffer);
-
delete Buffer;
-
BUFFERSIZE *=2;
-
Buffer = new sal_Char[BUFFERSIZE];
-
for(sal_Int32 i=0;i<aBuf.getLength();++i,++Buffer)
-
*Buffer = aBuf.getStr()[i];
-
s = &Buffer[nPos];
-
}
-
}
-
}
-
m_sErrorMessage += aError;
-
delete Buffer;
-
Buffer = NULL;
}
-
IN_SQLyyerror = false;
-
YY_FLUSH_BUFFER;
-
}
//------------------------------------------------------------------------------
void OSQLScanner::prepareScan(const ::rtl::OUString & rNewStatement, const IParseContext* pContext, sal_Bool bInternational)
{
-
YY_FLUSH_BUFFER;
BEGIN(m_nRule);
@@ -752,7 +629,6 @@ void OSQLScanner::prepareScan(const ::rtl::OUString & rNewStatement, const IPars
m_nCurrentPos = 0;
m_bInternational = bInternational;
m_pContext = pContext;
-
}
//------------------------------------------------------------------------------
@@ -784,16 +660,4 @@ sal_Int32 OSQLScanner::SQLlex()
{
return SQLyylex();
}
-/*------------------------------------------------------------------------
-
- $Log: not supported by cvs2svn $
-
- Revision 1.2 2000/08/01 14:26:02 oj
- modified
-
- Revision 1.1 2000/07/25 10:39:47 oj
- new revision
-
- Revision 1.0 21.07.2000 10:54:08 oj
-------------------------------------------------------------------------*/
diff --git a/connectivity/source/parse/sqlnode.cxx b/connectivity/source/parse/sqlnode.cxx
index 47b3e4a2a1eb..9480a274bce5 100644
--- a/connectivity/source/parse/sqlnode.cxx
+++ b/connectivity/source/parse/sqlnode.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: sqlnode.cxx,v $
*
- * $Revision: 1.31 $
+ * $Revision: 1.32 $
*
- * last change: $Author: oj $ $Date: 2002-09-27 11:10:32 $
+ * last change: $Author: hr $ $Date: 2003-03-19 16:38:47 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -67,7 +67,10 @@
#include <internalnode.hxx>
#endif
#define YYBISON 1
+#ifndef BISON_INCLUDED
+#define BISON_INCLUDED
#include <sqlbison.hxx>
+#endif
#ifndef _CONNECTIVITY_SQLPARSE_HXX
#include <connectivity/sqlparse.hxx>
#endif
@@ -327,7 +330,7 @@ void OSQLParseNode::parseNodeToStr(::rtl::OUString& rString, const SQLParseNodeP
{
// Funktionsname nicht quoten
SQLParseNodeParameter aNewParam(rParam);
- aNewParam.bQuote = sal_False;
+ aNewParam.bQuote = ( SQL_ISRULE(this,length_exp) || SQL_ISRULE(this,char_value_fct) );
m_aChilds[0]->parseNodeToStr(rString, aNewParam);
aNewParam.bQuote = rParam.bQuote;