[ https://issues.apache.org/jira/browse/TRAFODION-2637?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16063966#comment-16063966 ]
ASF GitHub Bot commented on TRAFODION-2637: ------------------------------------------- Github user DaveBirdsall commented on a diff in the pull request: https://github.com/apache/incubator-trafodion/pull/1141#discussion_r124145650 --- Diff: core/sql/lib_mgmt/src/main/java/org/trafodion/libmgmt/SyncLibUDF.java --- @@ -0,0 +1,170 @@ +/** +* @@@ START COPYRIGHT @@@ +* +* 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. +* +* @@@ END COPYRIGHT @@@ + */ +package org.trafodion.libmgmt; + +import java.io.File; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.Path; + +import org.trafodion.sql.udr.UDR; +import org.trafodion.sql.udr.UDRInvocationInfo; +import org.trafodion.sql.udr.UDRPlanInfo; +import org.trafodion.sql.udr.UDRException; + +public class SyncLibUDF extends UDR { + + // default constructor + public SyncLibUDF() + {} + + @Override + public void describeParamsAndColumns(UDRInvocationInfo info) + throws UDRException + { + // this TMUDF takes no table-valued inputs, two string + // parameters, and generates a table with a single integer + // value. It assumes that it was created with the following + // DDL, without specifying parameters or return values: + // + // create table_mapping function SyncLibUDF() + // external name 'org.trafodion.libmgmt.SyncLibUDF' + // library ...; + // + // The call is like this: select ... from udf(synclibudf(<op>,<file>)) + // + // <op> is 'c' to create/copy a file from the HDFS staging area for + // the current user into a local file on every node, or + // 'd' to delete/drop a local file on every node + // <file> is an unqualified file name (no '/' in the name) + // + // Example: + // + // select * from udf("_LIBMGR_".synclibudf('c', 'mylib.jar')); + // + // INSTANCE_NUM + // ------------ + // + // 0 + // 1 + // + // --- 2 row(s) selected. + // >> + + + if (info.par().getNumColumns() != 2) + throw new UDRException(38970, "This UDF needs to be called with two input parameters"); + if (info.getNumTableInputs() > 0) + throw new UDRException(38971, "This UDF needs to be called without table-valued inputs"); + + for (int i=0; i<2; i++) + info.addFormalParameter(info.par().getColumn(i)); + info.out().addIntColumn("INSTANCE_NUM", false); + } + + @Override + public void describeDesiredDegreeOfParallelism(UDRInvocationInfo info, + UDRPlanInfo plan) + throws UDRException + { + boolean usesVirtualNodes = false; + + // check for configurations with virtual nodes. Run the UDF serially + // in those cases, since all the virtual nodes share the same node. --- End diff -- This is an interesting bit of smarts. Is it universal among our system UDFs? I wonder too about our optimizer: does it reduce DoP when we run on virtual nodes? > Library management in the absence of password-less ssh > ------------------------------------------------------ > > Key: TRAFODION-2637 > URL: https://issues.apache.org/jira/browse/TRAFODION-2637 > Project: Apache Trafodion > Issue Type: Bug > Components: sql-general > Affects Versions: 2.1-incubating > Reporter: Hans Zeller > Assignee: Hans Zeller > Fix For: 2.2-incubating > > > We have a set of built-in stored procedures that can be used to deploy > libraries for UDRs to a Trafodion cluster. Some of these stored procedures > rely on the pdsh command, which in turn relies on password-less ssh between > the nodes of a cluster. Some installations, however, don't support > password-less ssh. We therefore need to find another method to distribute the > files. -- This message was sent by Atlassian JIRA (v6.4.14#64029)