Example #1
0
        /*
         * Parse out the column definition for a CREATE statement.
         */
        public TsColumn parseColumnDefn(String columnDefn) //throws TinySQLException
        {
            TsColumn       createColumn;
            int            i;
            FieldTokenizer ft;
            String         columnName, colTypeStr, colTypeSpec;

            ft = new FieldTokenizer(columnDefn.toUpperCase(), ' ', false);

/*
 *    A column definition must consist of a column name followed by a
 *    column specification.
 */
            if (ft.countFields() < 2)
            {
                throwException(2);
            }
            columnName = ft.getField(0);

/*
 *    Check for quotes around a column name that may contain blanks.
 */
            if (columnName.charAt(0) == '"' &
                columnName.charAt(columnName.length() - 1) == '"')
            {
                columnName = columnName.substring(1, columnName.length() - 1);
            }
            if (columnName.length() > 11)
            {
                columnName = TinySQLGlobals.getShortName(columnName);
            }
            createColumn = new TsColumn(columnName);
            colTypeStr   = "";
            for (i = 1; i < ft.countFields(); i++)
            {
                colTypeStr += ft.getField(1);
            }
            ft                         = new FieldTokenizer(colTypeStr, '(', false);
            colTypeStr                 = ft.getField(0);
            createColumn.size          = 10;
            createColumn.decimalPlaces = 0;
            if (colTypeStr.equals("FLOAT"))
            {
                createColumn.size          = 12;
                createColumn.decimalPlaces = 2;
            }
            colTypeSpec = ft.getField(1);
            if (!colTypeSpec.equals("NULL"))
            {
/*
 *       Parse out the scale and precision if supplied.
 */
                ft = new FieldTokenizer(colTypeSpec, ',', false);
                createColumn.size          = ft.getInt(0, 8);
                createColumn.decimalPlaces = ft.getInt(1, 0);
            }
            createColumn.type = java.lang.Integer.MIN_VALUE;
            for (i = 0; i < colTypeNames.Length; i++)
            {
                if (colTypeStr.equals(colTypeNames[i]))
                {
                    createColumn.type = colTypes[i];
                }
            }
            if (createColumn.type == java.lang.Integer.MIN_VALUE)
            {
                throwException(8);
            }
            if (TinySQLGlobals.PARSER_DEBUG)
            {
                java.lang.SystemJ.outJ.println("Column " + createColumn.name
                                               + ", type is " + createColumn.type + ",size is " + createColumn.size
                                               + ",precision is " + createColumn.decimalPlaces);
            }
            return(createColumn);
        }