Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-843 bc9c86073 -> 1d860955e


IGNITE-843 Moved test-drive DDL to external file + minor refactorings of agent 
configuration.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/1d860955
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/1d860955
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/1d860955

Branch: refs/heads/ignite-843
Commit: 1d860955e68f07a5d872b2e0fd3905dce815a2ca
Parents: bc9c860
Author: Alexey Kuznetsov <akuznet...@apache.org>
Authored: Fri Aug 21 16:57:18 2015 +0700
Committer: Alexey Kuznetsov <akuznet...@apache.org>
Committed: Fri Aug 21 16:57:18 2015 +0700

----------------------------------------------------------------------
 modules/control-center-agent/README.txt         |   5 +-
 .../assembly/release-control-center-agent.xml   |   4 +-
 .../apache/ignite/agent/AgentConfiguration.java | 110 +++++++++----------
 .../org/apache/ignite/agent/AgentLauncher.java  |  20 ++--
 .../org/apache/ignite/agent/AgentSocket.java    |   4 +-
 .../org/apache/ignite/agent/AgentUtils.java     |   4 +-
 .../handlers/DatabaseMetadataExtractor.java     |   2 +-
 .../ignite/agent/handlers/RestExecutor.java     |   4 +-
 .../agent/testdrive/AgentMetadataTestDrive.java |  44 +++-----
 .../test-drive/test-drive.sql                   |  40 +++++++
 10 files changed, 128 insertions(+), 109 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1d860955/modules/control-center-agent/README.txt
----------------------------------------------------------------------
diff --git a/modules/control-center-agent/README.txt 
b/modules/control-center-agent/README.txt
index e9a57ff..f5ebfed 100644
--- a/modules/control-center-agent/README.txt
+++ b/modules/control-center-agent/README.txt
@@ -52,10 +52,11 @@ Options:
        URI for connect to Ignite Web Agent, for example: 
"wss://control-center.example.com:3001".
        Default: "wss://localhost:3001".
 
-    -tm, --test-metadata
+    -tm, --test-drive-metadata
        Start H2 database with sample tables in same process.
+       JDBC URL for connect to sample database: jdbc:h2:mem:test-drive-db
 
-    -ts, --test-sql
+    -ts, --test-drive-sql
        Create cache and populate it with sample data for use in query.
 
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1d860955/modules/control-center-agent/assembly/release-control-center-agent.xml
----------------------------------------------------------------------
diff --git 
a/modules/control-center-agent/assembly/release-control-center-agent.xml 
b/modules/control-center-agent/assembly/release-control-center-agent.xml
index f16ccf5..e7f46e8 100644
--- a/modules/control-center-agent/assembly/release-control-center-agent.xml
+++ b/modules/control-center-agent/assembly/release-control-center-agent.xml
@@ -31,8 +31,8 @@
             <directory>${basedir}</directory>
             <outputDirectory>/</outputDirectory>
             <includes>
-                <include>jdbc-drivers/README*</include>
-                <include>test-drive/README*</include>
+                <include>jdbc-drivers/*.*</include>
+                <include>test-drive/*.*</include>
                 <include>README*</include>
                 <include>LICENSE*</include>
                 <include>NOTICE*</include>

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1d860955/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentConfiguration.java
----------------------------------------------------------------------
diff --git 
a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentConfiguration.java
 
b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentConfiguration.java
index ae74e38..d156509 100644
--- 
a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentConfiguration.java
+++ 
b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentConfiguration.java
@@ -49,7 +49,7 @@ public class AgentConfiguration {
     /** */
     @Parameter(names = {"-n", "--node-uri"},
         description = "URI for connect to Ignite REST server, for example: 
http://localhost:8080";)
-    private String nodeUri = "http://localhost:8080";;
+    private String nodeUri;
 
     /** */
     @Parameter(names = {"-c", "--config"}, description = "Path to 
configuration file")
@@ -57,136 +57,137 @@ public class AgentConfiguration {
 
     /** */
     @Parameter(names = {"-drv", "--driver-folder"},
-        description = "Path to folder with JDBC drivers, for example 
/home/user/jdbc-drivers")
+        description = "Path to folder with JDBC drivers, for example: 
/home/user/jdbc-drivers")
     private String driversFolder;
 
     /** */
     @Parameter(names = { "-tm", "--test-drive-metadata" },
-        description = "Start H2 database with sample tables in same process.")
-    private boolean meta;
+        description = "Start H2 database with sample tables in same process. " 
+
+            "JDBC URL for connect to sample database: 
jdbc:h2:mem:test-drive-db")
+    private Boolean meta;
 
     /** */
     @Parameter(names = { "-ts", "--test-drive-sql" },
         description = "Create cache and populate it with sample data for use 
in query.")
-    private boolean sql;
+    private Boolean sql;
 
     /** */
     @Parameter(names = { "-h", "--help" }, description = "Print this help 
message")
-    private boolean help;
+    private Boolean help;
 
     /**
      * @return Login.
      */
-    public String getLogin() {
+    public String login() {
         return login;
     }
 
     /**
      * @param login Login.
      */
-    public void setLogin(String login) {
+    public void login(String login) {
         this.login = login;
     }
 
     /**
      * @return Password.
      */
-    public String getPassword() {
+    public String password() {
         return pwd;
     }
 
     /**
      * @param pwd Password.
      */
-    public void setPassword(String pwd) {
+    public void password(String pwd) {
         this.pwd = pwd;
     }
 
     /**
      * @return Server URI.
      */
-    public String getServerUri() {
+    public String serverUri() {
         return srvUri;
     }
 
     /**
      * @param srvUri URI.
      */
-    public void setServerUri(String srvUri) {
+    public void serverUri(String srvUri) {
         this.srvUri = srvUri;
     }
 
     /**
      * @return Node URI.
      */
-    public String getNodeUri() {
+    public String nodeUri() {
         return nodeUri;
     }
 
     /**
      * @param nodeUri Node URI.
      */
-    public void setNodeUri(String nodeUri) {
+    public void nodeUri(String nodeUri) {
         this.nodeUri = nodeUri;
     }
 
     /**
      * @return Configuration path.
      */
-    public String getConfigPath() {
+    public String configPath() {
         return cfgPath;
     }
 
     /**
-     * @param cfgPath Config path.
-     */
-    public void setConfigPath(String cfgPath) {
-        this.cfgPath = cfgPath;
-    }
-
-    /**
      * @return Configured drivers folder.
      */
-    public String getDriversFolder() {
+    public String driversFolder() {
         return driversFolder;
     }
 
     /**
      * @param driversFolder Driver folder.
      */
-    public void setDriversFolder(String driversFolder) {
+    public void driversFolder(String driversFolder) {
         this.driversFolder = driversFolder;
     }
 
     /**
      * @return {@code true} If metadata test drive should be started.
      */
-    public boolean isTestDriveMeta() {
-        return meta;
+    public Boolean testDriveMetadata() {
+        return meta != null ? meta : false;
     }
 
     /**
      * @param meta Set to {@code true} if metadata test drive should be 
started.
      */
-    public void setTestDriveMeta(boolean meta) {
+    public void testDriveMetadata(Boolean meta) {
         this.meta = meta;
     }
 
     /**
      * @return {@code true} If SQL test drive should be started.
      */
-    public boolean isTestDriveSql() {
-        return sql;
+    public Boolean testDriveSql() {
+        return sql != null ? sql : false;
     }
 
     /**
      * @param sql Set to {@code true} if SQL test drive should be started.
      */
-    public void setTestDriveSql(boolean sql) {
+    public void testDriveSql(Boolean sql) {
         this.sql = sql;
     }
 
     /**
+     * @return {@code true} If agent options usage should be printed.
+     */
+    public Boolean help() {
+        return help != null ? help : false;
+    }
+
+    /**
      * @param cfgUrl URL.
      */
     public void load(URL cfgUrl) throws IOException {
@@ -199,65 +200,58 @@ public class AgentConfiguration {
         String val = (String)props.remove("login");
 
         if (val != null)
-            setLogin(val);
+            login(val);
 
         val = (String)props.remove("password");
 
         if (val != null)
-            setPassword(val);
+            password(val);
 
         val = (String)props.remove("serverURI");
 
         if (val != null)
-            setServerUri(val);
+            serverUri(val);
 
         val = (String)props.remove("nodeURI");
 
         if (val != null)
-            setNodeUri(val);
+            nodeUri(val);
 
         val = (String)props.remove("driverFolder");
 
         if (val != null)
-            setDriversFolder(val);
+            driversFolder(val);
     }
 
     /**
      * @param cmd Command.
      */
     public void merge(AgentConfiguration cmd) {
-        if (cmd.getLogin() != null)
-            setLogin(cmd.getLogin());
+        if (cmd.login() != null)
+            login(cmd.login());
 
-        if (cmd.getPassword() != null)
-            setPassword(cmd.getPassword());
+        if (cmd.password() != null)
+            password(cmd.password());
 
-        if (cmd.getServerUri() != null)
-            setServerUri(cmd.getServerUri());
+        if (cmd.serverUri() != null)
+            serverUri(cmd.serverUri());
 
         if (srvUri == null)
-            setServerUri(DFLT_SERVER_URI);
+            serverUri(DFLT_SERVER_URI);
 
-        if (cmd.getNodeUri() != null)
-            setNodeUri(cmd.getNodeUri());
+        if (cmd.nodeUri() != null)
+            nodeUri(cmd.nodeUri());
 
         if (nodeUri == null)
-            setNodeUri(DFLT_NODE_URI);
+            nodeUri(DFLT_NODE_URI);
 
-        if (cmd.getDriversFolder() != null)
-            setDriversFolder(cmd.getDriversFolder());
+        if (cmd.driversFolder() != null)
+            driversFolder(cmd.driversFolder());
 
-        if (cmd.isTestDriveMeta())
-            setTestDriveMeta(true);
-
-        if (cmd.isTestDriveSql())
-            setTestDriveSql(true);
-    }
+        if (cmd.testDriveMetadata())
+            testDriveMetadata(true);
 
-    /**
-     * @return {@code true} If agent options usage should be printed.
-     */
-    public boolean help() {
-        return help;
+        if (cmd.testDriveSql())
+            testDriveSql(true);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1d860955/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentLauncher.java
----------------------------------------------------------------------
diff --git 
a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentLauncher.java
 
b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentLauncher.java
index 163c4c0..f2d8cab 100644
--- 
a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentLauncher.java
+++ 
b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentLauncher.java
@@ -60,27 +60,27 @@ public class AgentLauncher {
             return;
         }
 
-        if (cmdCfg.getConfigPath() != null)
-            cfg.load(new File(cmdCfg.getConfigPath()).toURI().toURL());
+        if (cmdCfg.configPath() != null)
+            cfg.load(new File(cmdCfg.configPath()).toURI().toURL());
 
         cfg.merge(cmdCfg);
 
-        if (cfg.getLogin() == null) {
+        if (cfg.login() == null) {
             System.out.print("Login: ");
 
-            cfg.setLogin(System.console().readLine().trim());
+            cfg.login(System.console().readLine().trim());
         }
 
-        if (cfg.getPassword() == null) {
+        if (cfg.password() == null) {
             System.out.print("Password: ");
 
-            cfg.setPassword(new String(System.console().readPassword()));
+            cfg.password(new String(System.console().readPassword()));
         }
 
-        if (cfg.isTestDriveMeta())
+        if (cfg.testDriveMetadata())
             AgentMetadataTestDrive.testDrive();
 
-        if (cfg.isTestDriveSql())
+        if (cfg.testDriveSql())
             AgentSqlTestDrive.testDrive();
 
         RestExecutor restExecutor = new RestExecutor(cfg);
@@ -103,9 +103,9 @@ public class AgentLauncher {
                 while (!Thread.interrupted()) {
                     AgentSocket agentSock = new AgentSocket(cfg, restExecutor);
 
-                    log.log(Level.INFO, "Connecting to: " + 
cfg.getServerUri());
+                    log.log(Level.INFO, "Connecting to: " + cfg.serverUri());
 
-                    client.connect(agentSock, URI.create(cfg.getServerUri()));
+                    client.connect(agentSock, URI.create(cfg.serverUri()));
 
                     agentSock.waitForClose();
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1d860955/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentSocket.java
----------------------------------------------------------------------
diff --git 
a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentSocket.java
 
b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentSocket.java
index 810bf9b..39a3ade 100644
--- 
a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentSocket.java
+++ 
b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentSocket.java
@@ -93,8 +93,8 @@ public class AgentSocket implements WebSocketSender {
         JsonObject authMsg = new JsonObject();
 
         authMsg.addProperty("type", "AuthMessage");
-        authMsg.addProperty("login", cfg.getLogin());
-        authMsg.addProperty("password", cfg.getPassword());
+        authMsg.addProperty("login", cfg.login());
+        authMsg.addProperty("password", cfg.password());
 
         send(authMsg);
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1d860955/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentUtils.java
----------------------------------------------------------------------
diff --git 
a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentUtils.java
 
b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentUtils.java
index be6d3e7..d756664 100644
--- 
a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentUtils.java
+++ 
b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentUtils.java
@@ -53,10 +53,10 @@ public class AgentUtils {
             // Resolve path to class-file.
             URI classesUri = domain.getCodeSource().getLocation().toURI();
 
-            boolean windows = 
System.getProperty("os.name").toLowerCase().contains("win");
+            boolean win = 
System.getProperty("os.name").toLowerCase().contains("win");
 
             // Overcome UNC path problem on Windows 
(http://www.tomergabel.com/JavaMishandlesUNCPathsOnWindows.aspx)
-            if (windows && classesUri.getAuthority() != null)
+            if (win && classesUri.getAuthority() != null)
                 classesUri = new URI(classesUri.toString().replace("file://", 
"file:/"));
 
             return new File(classesUri).getParentFile();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1d860955/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/DatabaseMetadataExtractor.java
----------------------------------------------------------------------
diff --git 
a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/DatabaseMetadataExtractor.java
 
b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/DatabaseMetadataExtractor.java
index ba2de15..2bf823c 100644
--- 
a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/DatabaseMetadataExtractor.java
+++ 
b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/DatabaseMetadataExtractor.java
@@ -41,7 +41,7 @@ public class DatabaseMetadataExtractor {
      * @param cfg Config.
      */
     public DatabaseMetadataExtractor(AgentConfiguration cfg) {
-        String driversFolder = cfg.getDriversFolder();
+        String driversFolder = cfg.driversFolder();
 
         if (driversFolder == null) {
             File agentHome = AgentUtils.getAgentHome();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1d860955/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/RestExecutor.java
----------------------------------------------------------------------
diff --git 
a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/RestExecutor.java
 
b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/RestExecutor.java
index d8af3b1..c86ae16 100644
--- 
a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/RestExecutor.java
+++ 
b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/RestExecutor.java
@@ -74,10 +74,10 @@ public class RestExecutor {
     @Remote
     public RestResult executeRest(String path, Map<String, String> params, 
String mtd, Map<String, String> headers,
         String body) throws IOException, URISyntaxException {
-        URIBuilder builder = new URIBuilder(cfg.getNodeUri());
+        URIBuilder builder = new URIBuilder(cfg.nodeUri());
 
         if (path != null) {
-            if (!path.startsWith("/") && !cfg.getNodeUri().endsWith("/"))
+            if (!path.startsWith("/") && !cfg.nodeUri().endsWith("/"))
                 path = '/' +  path;
 
             builder.setPath(path);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1d860955/modules/control-center-agent/src/main/java/org/apache/ignite/agent/testdrive/AgentMetadataTestDrive.java
----------------------------------------------------------------------
diff --git 
a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/testdrive/AgentMetadataTestDrive.java
 
b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/testdrive/AgentMetadataTestDrive.java
index 6c75417..ecb08af 100644
--- 
a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/testdrive/AgentMetadataTestDrive.java
+++ 
b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/testdrive/AgentMetadataTestDrive.java
@@ -1,7 +1,9 @@
 package org.apache.ignite.agent.testdrive;
 
+import org.apache.ignite.agent.*;
 import org.h2.tools.*;
 
+import java.io.*;
 import java.sql.*;
 import java.util.logging.*;
 
@@ -30,46 +32,28 @@ public class AgentMetadataTestDrive {
      * Start H2 database and populate it with several tables.
      */
     public static void testDrive() {
-        log.log(Level.INFO, "Starting in-memory H2 database for metadata test 
drive...");
+        log.log(Level.INFO, "TEST-DRIVE: Prepare in-memory H2 database...");
 
         try {
-            Connection conn = 
DriverManager.getConnection("jdbc:h2:mem:test-driver-db;DB_CLOSE_DELAY=-1", 
"sa", "");
+            Connection conn = 
DriverManager.getConnection("jdbc:h2:mem:test-drive-db;DB_CLOSE_DELAY=-1", 
"sa", "");
 
-            query(conn, "CREATE TABLE COUNTRY(ID INTEGER NOT NULL PRIMARY KEY, 
COUNTRY_NAME VARCHAR(100))");
-            log.log(Level.INFO, "Table COUNTRY created.");
+            File agentHome = AgentUtils.getAgentHome();
 
-            query(conn, "CREATE TABLE DEPARTMENT(" +
-                " DEPARTMENT_ID INTEGER  NOT NULL PRIMARY KEY," +
-                " DEPARTMENT_NAME VARCHAR(50) NOT NULL," +
-                " COUNTRY_ID INTEGER," +
-                " MANAGER_ID INTEGER)");
-            log.log(Level.INFO, "Table DEPARTMENT created.");
+            File sqlScript = new File((agentHome != null) ? new 
File(agentHome, "test-drive") : new File("test-drive"),
+                "test-drive.sql");
 
-            query(conn, "CREATE TABLE EMPLOYEE(" +
-                " EMPLOYEE_ID INTEGER NOT NULL PRIMARY KEY," +
-                " FIRST_NAME VARCHAR(20) NOT NULL," +
-                " LAST_NAME VARCHAR(30) NOT NULL," +
-                " EMAIL VARCHAR(25) NOT NULL," +
-                " PHONE_NUMBER VARCHAR(20)," +
-                " HIRE_DATE DATE NOT NULL," +
-                " JOB VARCHAR(50) NOT NULL," +
-                " SALARY DOUBLE," +
-                " MANAGER_ID INTEGER," +
-                " DEPARTMENT_ID INTEGER)");
-            log.log(Level.INFO, "Table EMPLOYEE created.");
-
-            query(conn, "CREATE INDEX EMP_SALARY_A ON EMPLOYEE(SALARY ASC)");
-            query(conn, "CREATE INDEX EMP_SALARY_B ON EMPLOYEE(SALARY DESC)");
-            query(conn, "CREATE INDEX EMP_NAMES ON EMPLOYEE(FIRST_NAME ASC, 
LAST_NAME  ASC)");
-            log.log(Level.INFO, "Indexes for table EMPLOYEE created.");
+            RunScript.execute(conn, new FileReader(sqlScript));
+            log.log(Level.INFO, "TEST-DRIVE: Sample tables created.");
 
             conn.close();
 
             Server.createTcpServer("-tcpDaemon").start();
 
-            log.log(Level.INFO, "TcpServer stared.");
-        } catch (SQLException e) {
-            log.log(Level.SEVERE, "Failed to start test drive for metadata!", 
e);
+            log.log(Level.INFO, "TEST-DRIVE: TcpServer stared.");
+
+            log.log(Level.INFO, "TEST-DRIVE: JDBC URL for test drive metadata 
load: jdbc:h2:mem:test-drive-db");
+        } catch (Exception e) {
+            log.log(Level.SEVERE, "TEST-DRIVE: Failed to start test drive for 
metadata!", e);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1d860955/modules/control-center-agent/test-drive/test-drive.sql
----------------------------------------------------------------------
diff --git a/modules/control-center-agent/test-drive/test-drive.sql 
b/modules/control-center-agent/test-drive/test-drive.sql
new file mode 100644
index 0000000..98cfa25
--- /dev/null
+++ b/modules/control-center-agent/test-drive/test-drive.sql
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+CREATE TABLE COUNTRY(ID INTEGER NOT NULL PRIMARY KEY, COUNTRY_NAME 
VARCHAR(100));
+
+CREATE TABLE DEPARTMENT(
+                DEPARTMENT_ID INTEGER  NOT NULL PRIMARY KEY,
+                DEPARTMENT_NAME VARCHAR(50) NOT NULL,
+                COUNTRY_ID INTEGER,
+                MANAGER_ID INTEGER);
+
+CREATE TABLE EMPLOYEE(
+                EMPLOYEE_ID INTEGER NOT NULL PRIMARY KEY,
+                FIRST_NAME VARCHAR(20) NOT NULL,
+                LAST_NAME VARCHAR(30) NOT NULL,
+                EMAIL VARCHAR(25) NOT NULL,
+                PHONE_NUMBER VARCHAR(20),
+                HIRE_DATE DATE NOT NULL,
+                JOB VARCHAR(50) NOT NULL,
+                SALARY DOUBLE,
+                MANAGER_ID INTEGER,
+                DEPARTMENT_ID INTEGER);
+
+CREATE INDEX EMP_SALARY_A ON EMPLOYEE(SALARY ASC);
+CREATE INDEX EMP_SALARY_B ON EMPLOYEE(SALARY DESC);
+CREATE INDEX EMP_NAMES ON EMPLOYEE(FIRST_NAME ASC, LAST_NAME  ASC);

Reply via email to